什么是交叉编译工具?
交叉编译就是指在一种平台架构上编译在另外一种平台体系架构运行的程序。常见的是在X86的服务器上编译ARM linux的程序,或者windows环境下编译ARM MCU的程序。
交叉编译工具链是一套综合开发工具,包括编译器、链接器等其他辅助工具。平时工作一般不会要求自己制作交叉编译工具,会使用厂商提供的现成的(编译过程相对复杂,可以参考buildroot)。
这次碰到的问题是在使用aarm64-none-elf-gcc编译linux的应用程序时报错:
/opt/plnx/plnx-v17.3/tools/linux-i386/aarch64-none-elf/bin/../aarch64-none-elf/libc/usr/lib/crt0.o: In function `_start':
/proj/esdt_sdk/gnu_abe/ABE/builds/lin/arm/arm-none-eabi/snapshots/newlib-newlib-2_4_0/libgloss/aarch64/crt0.S:148: undefined reference to `initialise_monitor_handles'
/opt/plnx/plnx-v17.3/tools/linux-i386/aarch64-none-elf/bin/../aarch64-none-elf/libc/usr/lib/libc.a(lib_a-exit.o): In function `exit':
/proj/esdt_sdk/gnu_abe/ABE/builds/lin/arm/arm-none-eabi/snapshots/newlib-newlib-2_4_0/newlib/libc/stdlib/exit.c:70: undefined reference to `_exit'
/opt/plnx/plnx-v17