arm交叉编译器的链接失败
Linking fail for arm cross compiler
我对交叉编译了解不多。我在linux机器上使用eclipse来交叉编译armv7-一个Hello世界示例。
#include <iostream>
using namespace std;
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
交叉设置:arm none eabi-
路径:/usr/lib/arm-none eabi
跨g++编译器:g++-c-fmessage length=0-mcpu=cortex-m3-march=armv7-a
我得到以下链接器错误:
13:54:47 **** Incremental Build of configuration Debug for project Hellocpp ****
make all
Building file: ../src/main.cpp
Invoking: Cross G++ Compiler
arm-none-eabi-g++ -O0 -g3 -Wall -c -fmessage-length=0 -mthumb -mcpu=cortex-m3 -march=armv7-a -MMD -MP -MF"src/main.d" -MT"src/main.o" -o "src/main.o" "../src/main.cpp"
../src/main.cpp:1:0: warning: switch -mcpu=cortex-m3 conflicts with -march=armv7-a switch
//============================================================================
Finished building: ../src/main.cpp
Building target: Hellocpp
Invoking: Cross G++ Linker
arm-none-eabi-g++ -o "Hellocpp" ./src/main.o
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libstdc++.a(locale_init.o): In function `(anonymous namespace)::get_locale_mutex()':
/build/libstdc++-arm-none-eabi-yOFevq/libstdc++-arm-none-eabi-10/build/libstdc++/src/c++98/../../../../src/libstdc++-v3/src/c++98/locale_init.cc:66: undefined reference to `__sync_synchronize'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libstdc++.a(locale.o): In function `get_locale_cache_mutex':
/build/libstdc++-arm-none-eabi-yOFevq/libstdc++-arm-none-eabi-10/build/libstdc++/src/c++98/../../../../src/libstdc++-v3/src/c++98/locale.cc:36: undefined reference to `__sync_synchronize'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libstdc++.a(future.o): In function `__future_category_instance':
/build/libstdc++-arm-none-eabi-yOFevq/libstdc++-arm-none-eabi-10/build/libstdc++/src/c++11/../../../../src/libstdc++-v3/src/c++11/future.cc:64: undefined reference to `__sync_synchronize'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-abort.o): In function `abort':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/stdlib/../../../../../newlib/libc/stdlib/abort.c:63: undefined reference to `_exit'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-exit.o): In function `exit':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/stdlib/../../../../../newlib/libc/stdlib/exit.c:70: undefined reference to `_exit'
makefile:45: recipe for target 'Hellocpp' failed
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-fstatr.o): In function `_fstat_r':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/fstatr.c:62: undefined reference to `_fstat'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-openr.o): In function `_open_r':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/openr.c:59: undefined reference to `_open'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/sbrkr.c:58: undefined reference to `_sbrk'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-signalr.o): In function `_kill_r':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/signalr.c:61: undefined reference to `_kill'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-signalr.o): In function `_getpid_r':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/signalr.c:97: undefined reference to `_getpid'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-writer.o): In function `_write_r':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/writer.c:58: undefined reference to `_write'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-closer.o): In function `_close_r':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/closer.c:53: undefined reference to `_close'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-isattyr.o): In function `_isatty_r':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/isattyr.c:58: undefined reference to `_isatty'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-lseekr.o): In function `_lseek_r':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/lseekr.c:58: undefined reference to `_lseek'
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/libc.a(lib_a-readr.o): In function `_read_r':
/build/newlib-jo3xW1/newlib-2.4.0.20160527/build/arm-none-eabi/newlib/libc/reent/../../../../../newlib/libc/reent/readr.c:58: undefined reference to `_read'
collect2: error: ld returned 1 exit status
make: *** [Hellocpp] Error 1
"make all" terminated with exit code 2. Build might be incomplete.
我该如何解决这个问题?
这些函数通常是嵌入目标的libgloss的一部分。
如果您不想提供这些函数的自己版本,可以使用--specs=nosys.specs
。通过使用这个规范(您可以阅读它,它是一个文本文件(,您将告诉编译器更改链接规范和针对nosys libgloss的链接,后者包含这些函数的默认版本。
请注意,您需要链接到--specs=nosys.specs -mthumb -mcpu=cortex-m3 -march=armv7-m
,或者至少链接到mcpu选项,否则您将有未定义的__sync_synchronize
引用。
相关文章:
- mapreduce c编程与-fPIC链接失败,如何解决?
- 引用构造函数时链接失败
- 嵌入 python3.6 和 MinGW 在C++链接失败
- MAKE/CMAKE子目录链接到外部库的链接失败
- 与 CMAKE 的静态链接失败
- Android中的OpenCV 4.0.1链接失败
- 在静态库中链接失败,但链接共享库成功
- .so中存在的符号已编译.o引用了它,但链接失败
- 使用签证编译 dll / exe - 链接失败
- 在C++程序上使用mpicc链接失败
- 与iOS项目上的C 库链接失败
- C++链接失败-ld:找不到[makefile][gcc/cygwin]
- clang++链接失败:错误:源文件不是有效的UTF-8
- OpenCV:提供给imread()的链接失败
- 错误: /usr/bin/ld: 最终链接失败: 文件被截断
- 链接失败。如何使用'NtQuerySystemTime'窗口功能?
- 变量模板链接失败
- 克隆链接失败
- 安特尔和链接失败
- 最终链接失败:包含 windows.h 时参数无效