问题描述:环境变量已正确添加,但执行gcc可执行程序时,显示没有那个文件或目录。
原因分析:首先要分清两种不同的架构,arm架构和x86架构,arm架构运行的程序,使用x86架构去开发,就需要交叉编译工具链编译的程序,才能够在arm架构上运行;使用arm架构进行开发,将不在需要交叉编译工具链。此次服务器是aarch64的arm架构,运行环境也为arm架构,所以无需交叉编译工具链
解决办法:在虚拟机(x86架构)上进行交叉编译工作。
虚拟机x86架构安装两种arm交叉编译工具链:
方法一:
我们都知道Ubuntu有一个专门用来安装软件的工具apt,我们可以用它来全自动安装arm-linux-gcc。
此方法安装的是最新版的,但是此方法需要FQ,否则99%会失败,这就是为什么网上大多都用压缩包安装的原因:
首先Ctrl+Alt+T弹出终端,使用如下命令进行arm-linux-gcc的安装:
sudo apt-get install gcc-arm-linux-gnueabihf
使用如下命令进行arm-linux-g++的安装:
sudo apt-get install g++-arm-linux-gnueabihf
如果要卸载时使用如下命令进行移除,arm-linux-gcc的卸载:
sudo apt-get remove gcc-arm-linux-gnueabihf
arm-linux-g++的卸载:
sudo apt-get remove g++-arm-linux-gnueabihf
该方法工具链安装在默认路径,可执行文件无法查看,以下为常用的可执行文件:
- arm-linux-gnueabihf-gcc:ARM架构下的C编译器。
- arm-linux-gnueabihf-g++:ARM架构下的C++编译器。
- arm-linux-gnueabihf-gcov:用于代码覆盖率分析的工具。
- arm-linux-gnueabihf-gdb:ARM架构下的调试器。
- arm-linux-gnueabihf-ld:ARM架构下的链接器。
- arm-linux-gnueabihf-as:ARM架构下的汇编器。
- arm-linux-gnueabihf-objcopy:用于文件格式转换的工具,例如将ELF文件转换为bin文件。
- arm-linux-gnueabihf-objdump:用于反汇编ELF文件的工具。
- arm-linux-gnueabihf-readelf:用于查看ELF文件信息的工具。
- arm-linux-gnueabihf-size:用于查看目标文件大小的工具。
sudo apt-get install gcc-arm-linux-gnueabihf执行结束后查看可执行文件
要查看安装的可执行文件,可以使用以下命令:
dpkg -L gcc-arm-linux-gnueabihf
这将列出安装包中的所有文件。可以在输出中找到可执行文件的路径,并使用ls
命令来查看它们。
方法二:
安装64位的交叉编译工具,安装包:arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2
1.先把下载好的安装包移动到根目录下的tmp目录中(/tmp)
2.使用tar命令解压安装包,即在Terminal中输入以下命令:(前面的sudo表示使用root权限执行该命令)
sudo tar -xjvf /tmp/arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 -C /
注意是大写的字母C,此命令会把安装包解压到根目录下的opt的TuxamitoSoftToolchains里面(/opt/TuxamitoSoftToolchains)
如图逐层查看找到gcc-4.6.4所在的位置:/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi
3.解压完成后,再在(/usr/local)中创建一个新目录arm,即在Terminal中输入以下命令:
sudo mkdir /usr/local/arm
创建arm目录成功后,还需要给它解放全部权限,即在Terminal中输入以下命令:
sudo chmod 777 /usr/local/arm
4.在解压出来的目录中找到并把整个gcc-4.6.4目录复制到刚刚建好的arm目录中,命令如下:
先cd切换到gcc-4.6.4所在目录(切换后先ls看一下有没有gcc-4.6.4目录):
cd /opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/
再执行 cp 复制命令,-r 表示整个目录以及里面的任何东西
sudo cp -r gcc-4.6.4 /usr/local/arm
5.打开(.bashrc)配置环境变量和库变量,目的是以后可以在任何位置使用该交叉编译器,命令如下:
sudo vi ~/.bashrc
用vi或者vim打开后,在文件最后添加两行,并输入以下代码:第一行是添加执行程序的环境变量,第二行是库文件的路径
1 export PATH=$PATH:/usr/local/arm/gcc-linaro-7.5.0/bin 2 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-linaro-7.5.0/lib
然后保存退出即可。
6.使用source命令重新加载生效该配置文件
source /etc/profile
7.检验是否安装成功,在 Terminal 输入以下命令输出版本信息:
aarch64-linux-gnu-gcc -v
结果如图所示:得到刚刚安装的7.5.0版