armgcc交叉编译
① ubuntu中安装交叉编译环境,arm-linux-gcc-vnotfound
在Ubuntu系统中遇到安装交叉编译环境,尤其是arm-linux-gcc时,可能出现找不到arm-linux-gcc的问题。这通常发生在64位的Ubuntu系统上。尽管在32位Ubuntu系统上配置好环境后通常不会遇到此问题,但在64位系统中执行arm-linux-gcc时,可能会出现提示找不到该文件或目录的错误。
解决这个问题的关键在于确保系统中包含了32位运行库。在64位系统中运行32位的unicorn(arm-linux-gcc)需要相应的32位运行库支持。通过执行以下命令:
sudo apt-get install ia32-libs
即可解决这个问题。此命令将安装ia32-libs库,它包含了在64位系统中运行32位应用所需的所有32位库文件。安装完成后,尝试再次执行arm-linux-gcc,问题应该会得到解决。
这是一个简单而有效的解决方案,确保了在64位Ubuntu系统中能够正常安装并使用arm-linux-gcc进行交叉编译工作。
请注意,这个解决方案基于在64位Ubuntu系统中解决arm-linux-gcc找不到问题的情况。如果遇到其他与交叉编译环境相关的错误,可能需要进一步检查系统配置、依赖库以及编译器版本等。
感谢提供问题解决方案的作者,希望这些信息对遇到类似问题的开发者有帮助。
② 如何安装arm-linux-gcc
安装armlinuxgcc的步骤如下:
下载安装包或源码:
- 最常见的方式是下载armlinuxgcc的安装包,也可以从网上下载其源码。
解压安装包:
- 进入Linux系统,将当前目录设为armlinuxgcc的下载目录。
- 输入命令tar xzf armlinuxgcc4.4.3.tar.gz,将文件解压。解压后会有一个opt的文件夹。
创建并设置目录:
- 在/usr/local/中建立一个名为arm的文件夹。
- 输入命令cd /usr/local/进入该目录。
- 输入命令mkdir arm创建arm目录。
- 修改该文件夹的属性为可读写执行,输入命令chmod 777 arm。
复制源码到目标目录:
- 在Linux终端中输入命令sudo cp r /opt/FriendlyARM/toolschain/4.4.3 /usr/local/arm,将解压得到的源码复制到上一步中创建的arm文件夹下。注意路径可能因解压后的文件结构而异,需根据实际情况调整。
修改环境变量:
- 为了避免每次使用armlinuxgcc时都要输入完整路径,需要修改环境变量$PATH。
- 输入命令sudo gedit /etc/profile打开profile文件。
- 在最后一行加上export PATH=$PATH:/usr/local/arm/4.4.3/bin。
- 保存文件并退出编辑器。
使新的环境变量生效:
- 输入命令source /etc/profile使新的环境变量设置生效。
- 输入命令echo $PATH查看当前环境变量,确认已包含armlinuxgcc的路径。
验证安装:
- 输入命令armlinuxgcc v查看版本信息。
- 如果出现版本信息则表示安装成功。
按照以上步骤操作,即可成功安装armlinuxgcc交叉编译工具。
③ 如何制作arm-linux-gcc编译工具
一、下载源文件
源代码文件及其版本:
binutils-2.19.tar.bz2, gcc-core-4.4.4.tar.bz2 gcc-g++-4.4.4.tar.bz2 Glibc-2.7.tar.bz2 Glibc-ports-2.7.tar.bz2 Gmp-4.2.tar.bz2 mpfr-2.4.0.tar.bz2mpc-1.0.1.tar.gz Linux-2.6.25.tar.bz2 (由于我在编译出错的过程中,根据出错的信息修改了相关的C代码,故而没有下载相应的补丁)
一般一个完整的交叉编译器涉及到多个软件,主要包括bilinguals、cc、glibc等。其中,binutils主要生成一些辅助工具;gcc是用来生成交叉编译器,主要生成arm-linux-gcc交叉编译工具,而glibc主要提供用户程序所需要的一些基本函数库。
二、建立工作目录
编译所用主机型号 fc14.i686,虚拟机选的是VM7.0,Linux发行版选的是Fedora9,
第一次编译时用的是root用户(第二次用一般用户yyz), 所有的工作目录都在/home/yyz/cross下面建立完成,首先在/home/yyz目录下建立cross目录,然后进入工作目录,查看当前目录。命令如下:
创建工具链文件夹:
[root@localhost cross]# mkdir embedded-toolchains
下面在此文件夹下建立如下几个目录:
setup-dir:存放下载的压缩包;
src-dir:存放binutils、gcc、glibc解压之后的源文件;
Kernel:存放内核文件,对内核的配置和编译工作也在此完成;
build-dir :编译src-dir下面的源文件,这是GNU推荐的源文件目录与编译目录分离的做法;
tool-chain:交叉编译工具链的安装位;
program:存放编写程序;
doc:说明文档和脚本文件;
下面建立目录,并拷贝源文件。
[root@localhost cross] #cd embedded- toolchains
[root@localhost embedded- toolchains] #mkdir setup-dir src-dir kernel build-dir tool-chain program doc
[root@localhost embedded- toolchains] #ls
build-dir doc kernel program setup-dir src-dir tool-chain
[root@localhost embedded- toolchains] #cd setup-dir
拷贝源文件:
这里我们采用直接拷贝源文件的方法,首先应该修改setup-dir的权限
[root@localhost embedded- toolchains] #chmod 777 setup-dir
然后直接拷贝/home/yyz目录下的源文件到setup-dir目录中,如下图:
建立编译目录:
[root@localhost setup-dir] #cd ../build-dir
[root@localhost build -dir] #mkdir build-binutils build-gcc build-glibc
三、输出环境变量
输出如下的环境变量方便我们编译。
为简化操作过程。下面就建立shell命令脚本environment-variables:
[root@localhost build -dir] #cd ../doc
[root@localhost doc] #mkdir scripts
[root@localhost doc] #cd scripts
用编辑器vi编辑环境变量脚本envionment-variables:[root@localhost scripts]
#vi envionment-variables
export PRJROOT=/home/yyz/cross/embedded-toolchains
export TARGET=arm-linux
export PREFIX=$PRJROOT/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH
截图如下:
执行如下语句使环境变量生效:
[root@localhost scripts]# source ./environment-variables
四、建立二进制工具(binutils)
下面将分步介绍安装binutils-2.19.1的过程。
[root@localhost script] # cd $PRJROOT/src-dir
[root@localhost src-dir] # tar jxvf ../setup-dir/binutils-2.19.1.tar.bz2
[root@localhost src-dir] # cd $PRJROOT/build-dir/build-binutils
创建Makefile:
[root@localhost build-binutils] #../../src-dir/binutils-2.19.1/configure --target=$TARGET --prefix=$PREFIX
在build-binutils目录下面生成Makefile文件,然后执行make,make install,此过程比较缓慢,大约需要一个15分钟左右。完成后可以在$PREFIX/bin下面看到我们的新的binutil。
输入如下命令
[root@localhost build-binutils]#ls $PREFIX/bin