arm-linux-gcc4.4.4编译busybox-1.25.1

arm-linux-gcc4.4.4编译busybox-1.25.1
编译出现了一些问题,是因为arm-linux-gcc 比较旧,而busybox 比较新
用较新的gcc 应该不会出问题。
1. tar -xjvf busybox-1.25.1.tar.bz2
2. make defconfig
3. make menuconfig
  Busybox Setting ----->
    Build Options ----->
        //1选择将busybox进行静态编译
        [*]Build BusyBox as a static binary (no shared libs)
        //2.指定交叉编译器为
        (arm-linux-)Cross Compiler prefix
保存退出

make
出现如下编译错误:
miscutils/nandwrite.c:151: error: 'MTD_FILE_MODE_RAW' undeclared (first use in this function)
解决办法:
查MTD_FILE_MODE_RAW在/usr/include/mtd/mtd-abi.h中定义, 但arm-linux-gcc 使用的是交叉编译的路径,以我的为例,在如下位置。
/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/arm-fsl-linux-gnueabi/multi-libs/usr/include/mtd/mtd-abi.h
注意观察你的/usr/include 路径,找到正确使用的mtd-abi.h 文件。
把系统文件中的定义copy到交叉编译文件中即可。 可以看出新的文件是有的,旧的文件中没有该定义。这是移植常见的问题。
如果用旧一点的busybox 配旧一点的gcc, 就不会出现该符号,但相应也就不支持该功能。

修改后继续编译,出现如下编译错误:
util-linux/blkdiscard.c:72: error: 'BLKSECDISCARD' undeclared (first use in this function)
解决办法:
查该宏在linux/fs.h 中有定义, 找到交叉编译的multi-libs/usr/include/linux/fs.h, 把新版本添加的几个宏copy过来。
继续编译: 出现如下链接错误:
util-linux/lib.a(nsenter.o): In function `nsenter_main':
nsenter.c:(.text.nsenter_main+0x1b0): undefined reference to `setns'
coreutils/lib.a(sync.o): In function `sync_main':
sync.c:(.text.sync_main+0x7c): undefined reference to `syncfs'
collect2: ld returned 1 exit status
解决办法:
setns 在何方定义就不清楚了, 一个简单的办法是屏蔽掉该模块

继续编译,通过。
用make install, 安装到./_INSTALL

另外:
用arm-linux-gcc4.4.4 编译busybox-1.23.2
无痛通过, 爽!

于是得出结论: 这是本贴的目的之一,
旧的gcc不要编译最新的代码, 你可能得不到最新功能(可能也根本不需要)
从此要减少开源代码编译成本!




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要Ubuntu中编译arm-linux-gnueabihf-gcc,你需要搭建交叉编译环境。首先,你需要在PC端下载编译工具。然后,将交叉编译工具上传至Ubuntu中。你可以从官方网站下载arm-linux-gnueabihf-gcc。交叉编译器有两个版本:arm-linux-gnueabi和arm-linux-gnueabihf。这两个版本的区别在于目标平台的硬件浮点支持。选择合适的交叉编译器后,将下载的gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xz文件拷贝到arm目录中。使用以下命令拷贝文件:sudo cp gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f。完成这些步骤后,你就可以使用arm-linux-gnueabihf-gcc进行编译了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [arm-linux-gcc交叉编译环境搭建](https://blog.csdn.net/weixin_42892101/article/details/90370688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [【Linux-ARM】安装 arm-linux-gnueabihf 交叉编译openssl-arm静态库与动态库](https://blog.csdn.net/hanhui22/article/details/125237010)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值