This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

The code using linkage extern works in version gcc-arm-none-eabi-9-2020-q2-update, but not works in the later version

The linkage extern is declared in the head file. It compiles well in version gcc-arm-none-eabi-9-2020-q2-update.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef FLASH_H
#define FLASH_H
#include <stdio.h>
#include "pico/stdlib.h"
#include "pico/binary_info.h"
#include "hardware/spi.h"
#include "hardware/flash.h"
#define FLASH_TARGET_OFFSET (256 * 1024)
void print_buf(const uint8_t *buf, size_t len);
extern uint8_t *flashData;
#endif
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

But there are some error in later version.

Fullscreen
1
2
3
4
5
c:/progra~2/gnuarm~1/102021~1.07/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld.exe: CMakeFiles/uart.dir/device.c.obj:(.bss.flashData+0x0): multiple definition of `flashData'; CMakeFiles/uart.dir/uart_test_gprs.c.obj:(.bss.flashData+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
mingw32-make[2]: *** [CMakeFiles\uart.dir\build.make:1366: uart.elf] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:1644: CMakeFiles/uart.dir/all] Error 2
mingw32-make: *** [Makefile:102: all] Error 2
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

0