安装完交叉编译工具链验证的时候出现arm-none-linux-gnueabi-gcc: no input files或是arm-linux-gcc:command not found的解决方案

如题,今天在实现交叉编译的时候突然就发生了这么两个问题,在查阅了相关的资料后,总结出以下几个问题出现以及解决的方案:
1.环境变量的问题
2.64位的ubantu运行32位的交叉编译工具链需要32位的运行库

首先排查第一个环境变量的问题:
使用指令echo $PATH
查看环境变量:需要分别排查普通用户与root用户的环境变量,因为普通用户设置好的环境变量在root用户上面是不生效的
普通用户:

请添加图片描述

root用户:
请添加图片描述
我用的交叉编译工具链是arm-2009q3可以看到两个的环境变量是都配置了的(红线表示环境变量),如果你的环境变量里面没有这个或者类似这个的路径就说明是环境变量的问题,配置环境变量的方法全网有很多,这里就不再赘述的了,值得一提的是,我是将普通用户和root用户的环境变量配置在了不同的路径下面,建议还是配置在同一个路径下面(常用路径就是在/usr/local/下面创建一个arm文件夹然后将交叉编译工具链在arm文件夹下面解压,得到的文件里面的bin文件就是交叉编译工具链本体)这样的路径可以避免很多的弱智错误。列如我下面就因为两个用户的文件不一致导致了一些问题,我在这里列举出来供大家参考

在确保环境变量没有问题之后,我尝试着去运行交叉编译工具链发现了两个报错:arm-none-linux-gnueabi-gcc: no input files和arm-linux-gcc:command not found
如图:
请添加图片描述
很奇怪明明我的环境变量没有问题,而且我还专门移动到了交叉编译工具的对应目录下面去运行,为什么还是会报这样的错误呢?
于是我尝试在普通用户下面去运行:
请添加图片描述
看到这个结果我当时就迷了,为什么在普通用户下面可以运行arm-linux-gcc -v却运行不了./arm-none-linux-gnueabi-gcc呢?

我尝试去排查64位的ubantu运行32位的交叉编译工具链需要32位的运行库
敲入指令:sudo apt-get install lsb-core
sudo apt-get install lib32ncurses5 lib32z1

成功安装32位运行库之后,我尝试去分别在root用户与普通户用下面进行arm-linux-gcc -v和./arm-none-linux-gnueabi-gcc结果居然还是和上面的一样

我当时就迷了,认为ubantu出bug了,但是现在解决了
原来不是环境变量的问题也不是32位库没有安装的问题。
arm-linux-gcc:command not found的问题:
只是因为在运行arm-linux-gcc -v的时候这个arm-linux-gcc -v是个符号链接,当时晚上我没注意,前文说过了我在root用户下面和在普通用户下面的交叉编译工具的路径不一样,其实我在普通用户下面创建了这个arm-linux-gcc -v这个符号链接,在root用户下面没有创建arm-linux-gcc -v,所以才造成了在root用户下明明设置了环境变量甚至还在交叉编译工具对应路径下进行arm-linux-gcc -v还会出错在普通用户下就可以正常运行的问题

arm-none-linux-gnueabi-gcc: no input files的问题:
这个问题出现就更简单了,原来人家指令应该是./arm-none-linux-gnueabi-gcc -v,注意是./arm-none-linux-gnueabi -v 人家后面还有个-v这就尴尬了哈哈哈哈

既然清楚了问题,那么加上了符号链接和正确使用了./arm-none-linux-gnueabi-gcc -v命令之后,问题就解决了!
这里就不再贴图了(懒),反正这个问题基本上就是个粗心大意的问题,我觉得全网除了我再没有人会犯这样的错误了555,基本上正常错误就是上面两种环境变量问题与32位库问题

总结:
1.环境变量
2.32位库是否安装
3.是否像我一样没有链接符号链接就去傻乎乎的运行arm-linux-gcc -v,或者是./arm-none-linux-gnueabi-gcc -v命令没有敲全,少了后面的 -v

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐