20170808 --马克斯
自己折腾了很久,参考了很多他人的方法,遇到各种问题,终于把这个嵌入式交叉编译环境给弄好了。
下面是我自己的操作步骤和遇到的一些问题及解决方法,互相学习……
一般情况下,购买开发板时开发商会提供能在该开发板上正常运行的交叉编译工具。
因为不同的体系结构操作系统甚至是不同版本的内核,都会用不同的交叉编译器。
1.下载arm-linux-gcc-4.4.3.tar.gz
首先下载arm-linux-gcc-4.4.3.tar.gz到任意的目录下,然后解压。
推荐个下载地址:http://download.csdn.net/download/zlyong0018/4646377
注意,arm-linux-gcc-4.4.3.tar.gz解压出来是在/opt/FriendlyARM/toolschain/4.4.3中的。
2.解压
tar zxvf arm-linux-gcc-4.4.3.tar.gz
3.在/usr/local/下建立 arm的文件夹,并修改属性
mkdir arm #新建名为arm的文件夹
chmod 777 arm
4.把 opt下的4.4.3 目录复制到 /usr/local/arm下
$ sudo cp -r /opt/Friendlyarm/4.4.3 /usr/local/ #路径应根据自己的文件路径而定
也可以直接鼠标右键移动文件到目标路径下
5.修改环境变量,把交叉编译器的路径加入到PATH
方法1:推荐
修改/etc/profile文件(此文件属于系统级别的环境变量,设置在里面的东西对所有用户适用)
$ sudo gedit /etc/profile
在文件最后加上
export PATH=$PATH:/usr/local/arm/4.4.3/bin
方法2:修改/etc/bash.bashrc文件(此文件只对当前用户适用)
$ sudo gedit /etc/bash.bashrc
在最后加上
export PATH=$PATH:/usr/local/arm/4.4.3/bin
方法3:修改/etc/environment文件
$ sudo gedit /etc/environment
原文件应为PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: /usr/games“
将其改为
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4. 4.3/bin"
保存退出即可。即在后面添加:[$PATH]
6.立即使新的环境变量生效,不用重启电脑:
方法一: source/etc/profile方法二: source /root/.bashrc
方法三:注销系统(若上面不成功建议注销系统一下)
(顺序对应上面修改环境变量的方法)
7.检查是否将路径加入到PATH:
$ echo $PATH
显示的内容中若含有刚刚添加的路径,则说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
8.测试是否安装成功
$ arm-linux-gcc -v #应在有效的路径下测试
Using built-in specs. #若安装成功,会显示以下内容
Target: arm-none-linux-gnueabi
……
gcc version 4.4.3 (ctng-1.6.1)
注意
如果你的系统是32位的,安装成功的话就会显示 arm-linux-gcc 的版本信息;但是如果系统是64位的就会报错 15: exec: /usr/local/arm/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found 这是因为64位的系统缺少32位的库,需要再安装32位系统兼容包。
在Ubuntu 13.10之前,可以通过安装 ia32-libs 来支持32位软件。但是,该版本之后,Ubuntu就去掉了。
不过可以通过安装替的32位兼容包来实现该功能。命令行中输入以下命令:
$ sudo apt-get install lib32z1
$ sudo apt-get install lib32ncurses5
OK,到这里就已经完成了嵌入式交叉编译工具的安装了,使用方法也很简单,就像使用gcc命令一样,
直接使用arm-linux-gcc
比如编写一个hello.c程序
$ vim hello.c #写完后保存、退出
$ arm-linux-gcc -o hello hello.c #使用交叉编译工具编译hello.c,并生成目标文件hello