引言:相信学习系统移植,内核移植的朋友如果不会施法安装交叉编译工具的话只能下载压缩包来代替。这样伴随了一个问题:在验证是否安装完成的时候发现arm-linux-gcc not found报错。本篇将分析问题出处与解决方法。
一、为什么报错
首先总结出会报这个错的原因:无外乎系统找不到这个内容,或者包内没有这个指令。包内没有这个指令又分为找不到依赖库和确实没有这个指令。
二、解决方案
我们对症下药,根据上方的不同问题引出不同解决方案(Ubuntu22为例,其他发行版根据整体思路迁移即可):
(1)系统找不到这个内容:
系统找不到,说明系统路径中没有路径能够将你的指令引导到对应的文件夹,所以系统在它默认能够寻找的地方都没有找到后只能作罢。
1. 要解决这个问题,我们只需要在系统环境变量里告诉系统还可以到什么地方寻找所需的东西就可以了。我们可以这样添加:
vim etc/profile #打开对应文件添加环境变量内容,当然vi也是可以用的
2.在后文增加如下内容:
export PATH=$PATH:gcc安装包路径/bin
#例如export PATH=$PATH:/arm-linux-gcc-4.4.3-master/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:gcc安装包路径/lib
#例如export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/arm-linux-gcc-4.4.3-master/lib
3.添加完长这样:
4.保存退出后,别忘了更新一下列表(关掉重开也可以):
source /etc/profile
5.然后我们再查看版本,发现已经可以了
上文我进行的操作分别为强行告诉系统我就是要到这个文件夹下的bin和lib里面寻找我需要的指令,同学们可以不纠结于我为什么要这么书写代码,你只需要知道我的目的就是告诉系统这件事,相信以后遇到类似问题同学们就可以通过搜素”如何添加系统路径“或类似的字眼来寻找解决方案了。
(2)包内没有这个指令-找不到依赖库
经过长时间搜索查询资料,我发现国内网上大部分的工具版本都是4.4.3,这个工具是基于32位系统来进行编写的,所以我们使用64位系统来调用指令的话会出现库函数的不兼容问题从而导致找不到。我们可以安装32位库文件来解决。翻看笔记,在几年前类似的教学中安装的都是名为"ia32-libs"的库,不过我发现这个库现在已经无法通过apt来下载了。现在这个库的安装已经更新为:
sudo apt-get install lib32z1
安装完后就可以看到编译工具版本了
(3)包内没有这个指令-确实没有
网上资料繁多,各位同学寻找到的编译工具版本也不一定就相同。这个工具组的本质就是调用可执行文件。可执行文件的名字可不一定相同。比如说新版arm64和旧版arm32的bin文件存在以下区别(上方32位,下方64位):
很明显,新版的ARM64工具就没有arm-linux-gcc这个可执行程序,那么你去查看当然就是没有的,如果上面的问题都检查过的同学不妨看看自己兜里揣的东西是不是对的,这个问题最呆,但往往也是同学们不会去检查的地方。
三、下载地址与总结
1、总结
当然了,上面列举的问题是分类后的归纳结果,各位同学的包里也不一定就只存在一个问题。比如我的版本既没有32位库,又没有环境变量的问题也很常见,大家多尝试即可,实在不行也可以评论留言问问其他同学。
2、下载
对于有些同学,可能会觉得4.4.3的包过于折腾了,还不如直接重装。确实,这样也可以节省不少时间,所以我也为各位提供了下载其他版本的方法:
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
#ARM官网可以下载最新的版本,但最新的版本资料少,容易出现稀奇古怪的问题
sudo apt-get install gcc-arm-linux-gnueabihf
#apt自动安装,但是如果大家不会领gua域ti展zi开,十有八九会失败
【超级会员V3】通过百度网盘分享的文件:Tip_交叉编译…
链接:https://pan.baidu.com/s/1CEb5aZjyzvdtelFfLq1KcA
提取码:946e
复制这段内容打开「百度网盘APP 即可获取」
#大家最爱的__网盘,更新的哪个就是直接支持64位的
我是斯皮福,学习不迷路。下方查看整体教学计划
https://blog.youkuaiyun.com/Spiffo_Sir/article/details/133531867?spm=1001.2014.3001.5502