什么是交叉编译工具?
交叉编译就是指在一种平台架构上编译在另外一种平台体系架构运行的程序。常见的是在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.3/tools/linux-i386/aarch64-none-elf/bin/../aarch64-none-elf/libc/usr/lib/libc.a(lib_a-writ

本文介绍了ARM交叉编译工具的概念,解释了在X86平台编译ARM程序的需求。文章通过一个使用aarch64-none-elf-gcc编译Linux应用时遇到的错误,展示了交叉编译工具链的组成部分,并指出该工具链适用于编译U-Boot等,而编译应用程序应使用aarch64-linux-gnu-gcc。文章还提到了工具链的命名规则,分类和主流提供商,以及不同工具链的适用场景。
最低0.47元/天 解锁文章
772

被折叠的 条评论
为什么被折叠?



