MacOS M1下交叉编译ARM架构BusyBox缺失头文件的解决方法
解决MacOS M1上交叉编译ARM架构BusyBox时缺少byteswap.h/endian.h的问题
问题原因
你使用的arm-none-eabi-工具链是面向裸机嵌入式系统的,它的标准库不包含byteswap.h、endian.h这类Linux用户空间的POSIX头文件。而BusyBox是运行在Linux用户空间的工具集,依赖这些头文件,因此编译失败。(注:之前能成功编译Linux内核是因为内核自身实现了所需的头文件逻辑,不依赖工具链的标准库)
解决方案
换成针对Linux用户空间的ARM交叉编译工具链arm-linux-gnueabihf-gcc,具体步骤如下:
安装正确的交叉编译工具链
brew install arm-linux-gnueabihf-gcc清理BusyBox之前的编译残留配置
make distclean重新配置环境变量与BusyBox
export ARCH=arm export CROSS_COMPILE="arm-linux-gnueabihf-" make defconfig若需要自定义功能,可运行
make menuconfig调整配置,比如按需开启Settings -> Build static binary (no shared libs)选项。重新编译BusyBox
make -j$(sysctl -n hw.ncpu)
内容的提问来源于stack exchange,提问作者Julian20151006
相关产品推荐
相关产品推荐

