Busybox-1.29.2交叉编译找不到头文件

  • 问题背景

为了制作能够在开发板BeagleBone Black上运行的根文件系统,在ubuntu18.04中利用BeageleBone官方提供的交叉编译器gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf进行交叉编译,以制作后续要加载到内核中镜像文件,但是在已经用简单编写的hello.c程序验证过交叉编译器及相关配置环境基本正确的前提下,使用make命令进行编译时一直报错找不到limits.h头文件,并因此编译无法继续进行。

  • 尝试解决

在遇到问题时,我们也不要怕,要微笑地去面对它,奥利给!

小皮一下,进入正题,在疯狂地进行百度搜索之后,所得到的解决方案主要就是以下两种:

  1. 查看对应的头文件在交叉编译器目录下是否存在,如果没有的话重新安装 或者从有这个头文件的地方拷贝一份到报错目录下
  2. 使用命令echo “main() {}” | ${CC}gcc -E -v - 查看 include<*> 的头文件搜索路径,其中{CC}是所用交叉编译器的前缀名,以上面给的交叉编译器为例就是CC=arm-linux-gnueabihf-。如果在搜索路径下确实不存在该头文件,则重新安装或者拷贝一份到对应目录下

以上就是百度找到的一些可能可行的解决方案,实际上肯定不止这两种,不过由于自身水平有限,别的解决方案并没有怎么看懂,因此这里仅就摘录了这两种。而对于这次我出现的问题,上述两种解决方案貌似并不适用,因为在报错目录或是头文件的默认搜索路径下limits.h头文件都是存在的,不符合上述两种解决方案的前提描述,这下问题可大了,结果花了大把的时间在模拟实验室电脑成功编译的配置环境上,最后甚至还尝试着去修改报错文件的源代码——这是配置环境的大忌,但是依旧没有解决。

  • 最终方案

在走投无路的时候,向编译成功的大佬求教后才发现,网上其实是有解决方案的!!! 而如果想要搜到的话只要将搜索引擎百度的换成bing就行,搜索结果首页就有不错的解决方案 。。。。。。
最后成功的解决方案如下:

  1. make menuconfig将之前设置的交叉编译器头文件和安装目录都置空
  2. vim Makefile 搜索ARCHCROSS_COMPILE,将其修改为 ARCH=armCROSS_COMPILE=“path”,其中path就是交叉编译器的前缀,比如我这里就是armhf-linux-gnueabihf-,注意,这是在已经配置好了环境变量的前提下才可以直接写前缀名就行,如果没有配置的话可以先配置或者输入完整的路径名

就这样敲入make,花了不少时间惹得我心烦意乱的问题就解决了!make install在当前目录下就会出现 _install目录,那就是默认的文件系统根目录了,接下来就可以愉快地制作文件系统镜像文件了!
至于为什么不能在menuconfig里面改动,猜测是由于menuconfig中的修改可能要比在Makefile里面修改带来的未知改动大得多,之前在编译linux-4.14源码的时候也有这种情况,即修改menuconfig相关选项时会导致预期之外的配置变化,这样很可能会让我们的编译出现不可预知的错误,因此如果改动不是很大的话尽量尝试直接在Makefile中修改而不是make menuconfig

PS. 事后大佬说后续的镜像文件制作是有专门的一个工具genext2fs的,可以省去不少可能存在的配置麻烦,找到的一个链接如下genext2fs使用不愧是大佬啊!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值