呕心沥血翻阅无数资料才看到这个比较有用的,昨晚花了几个钟装4.3.2版本的一直不成功,今天无意在论坛看到这个东西试了一下,还是得花了两三个钟,着实累,但是成功了。听安慰的。
以下装arm-linux-gcc4.4.3这个交叉编译器是参考authorowen这位朋友,以下是该位朋友的博文:
参考了前人的成果,结合自己实践。
1 下载arm-linux-gcc-4.4.3.tgz到任意的目录下,进入这个文件夹
$ sudo tar xvzf arm-linux-gcc-4.4.3.tgz –C /
注意:C 后面有个空格,并且 C 是大写的,它是英文单词“Change”的第一个字母,在此是改变目录的意思。
执行该命令,将把 arm-linux-gcc 安装到/opt/Friendlyarm/4.4.3 目录。
在/usr/local/下建立 arm的文件夹
mkdir arm
chmod 777 arm
然后把 opt下的4.4.3 目录复制到 /usr/local/arm下
sudo cp -r /opt/Friendlyarm/4.4.3
2. 修改环境变量,把交叉编译器的路径加入到PATH。
网上很多修改环境变量的方法,很杂。有 redhat 上面的,federo(是这么写的吧)。下面一共三种方法,我都在UBUNTU11.10上试过,可行。
方法一:修改/etc/bash.bashrc文件(此文件只对当前用户适用)
$sudo gedit /etc/bash.bashrc(首都哥用的就是第一种方法,一开始失败,后边不知道怎么的也就成功了)
在最后加上export PATH=$PATH:/usr/local/arm/4.4.3/bin
方法二:修改/etc/profile文件(此文件属于系统级别的环境变量,设置在里面的东西对所有用户适用):
$sudo gedit /etc/profile
增加路径设置,在末尾添加如下,保存/etc/profile文件:
export PATH=$PATH:/usr/local/arm/4.4.3/bin
(没有用过这种)
方法三:修改/etc/environment文件
$sudo gedit /etc/environment
原文件应为PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: /usr/games“
(有照着操作一遍,后边又给还原了,但是再回归第一种方法时却成功了)
关于路径设置问题,可以 用终端逐步寻找,比如 在 终端下 cd /usr/local/ 用TAB键 一直找到 /bin
关于环境变量问题:
环境变量是什么?例如path,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
如果上面不加入环境变量,要运行arm-linux-gcc这个程序,则每次都要把arm-linux-gcc的完整路径写出来。/usr/local/arm/4.4.3/bin arm-linux-gcc 文件名 -o 输出文件名
这样非常的麻烦,所以加到path里面,让电脑知道这个程序在哪里。
3. 立即使新的环境变量生效,不用重启电脑:
对应方法一:$ source /root/.bashrc(首都哥用这一种)
对应方法二:$ source /etc/profile
方法三立即生效
4. 检查是否将路径加入到PATH:
$ echo $PATH
显示内容/usr/local/sbin:/usr /local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.4.3/bin 说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
5. 测试是否安装成功
$ arm-linux-gcc -v
上面的命令会显示arm-linux-gcc信息和版本,这是我显示的信息:
root@ubuntu:/home/berlin# arm-linux-gcc -v
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure --build=i386-build_redhat-linux-gnu --host=i386-build_redhat-linux-gnu --target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/toolschain/4.4.3 --with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --enable-languages=c,c++ --disable-multilib --with-arch=armv4t --with-cpu=arm920t --with-tune=arm920t --with-float=soft --with-pkgversion=ctng-1.6.1 --disable-sjlj-exceptions --enable-__cxa_atexit --with-gmp=/opt/FriendlyARM/toolschain/4.4.3 --with-mpfr=/opt/FriendlyARM/toolschain/4.4.3 --with-ppl=/opt/FriendlyARM/toolschain/4.4.3 --with-cloog=/opt/FriendlyARM/toolschain/4.4.3 --with-mpc=/opt/FriendlyARM/toolschain/4.4.3 --with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99 --enable-long-long --enable-target-optspace
Thread model: posix
gcc version 4.4.3 (ctng-1.6.1)
6.编译Hello World程序,测试交叉工具链
写下下面的Hello World程序,保存为hello.c
#include
int main()
{
printf("Hello World!\n");
return 0;
}
执行下面的命令:
$ arm-linux-gcc hello.c -o hello
ls 下
看到hello 执行文件
$ file hello
这样说明可以在ARM上运行,此时不能在pc上运行
上一篇:TQ2440之nand flash读写
下一篇:C程序访问ARM汇编程序中的函数
推荐阅读最新更新时间:2024-03-16 14:51
设计资源 培训 开发板 精华推荐
- 提交物联网应用创意,赢万用表、蓝牙耳机、小米排插、京东卡等好礼!
- 看视频赢好礼:泰克MIPI家族介绍和测试方案,迎接未来的测试挑战
- 物联网、汽车、AI全覆盖——世平集团恩智浦解决方案大秀场
- 有奖直播:市场环境不确定,为物联网设备保驾护航英飞凌很确定
- TI低功耗蓝牙技术与阿里云IoT智能生活开放平台iLOP的完美结合!预报名+看直播均可赢好礼!
- 力源&安森美有奖直播:RSL15 - 安森美更高效更智能更安全的 BLE 5.2 蓝牙芯片
- EE邀你一起来玩NXP RAPID IOT套件
- 电子书下载|ADI 触摸屏测试解决方案
- 打卡世健的ADI之路首站“工业自动化站”,赢Kindle、《新概念模拟电路》