转载请注明出处:http://blog.csdn.net/mybelief321/article/details/9076583

安装环境

Linux版本:Ubuntu 12.04    内核版本:Linux 3.5.0   交叉编译器版本:arm-linux-gcc-4.4.3 这个版本的交叉编译器我已经上传到了资源上,可以随便下载,点此下载

安装前的絮叨

首先简单介绍一下,所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。

交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例 如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使 用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问 题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工 具链,则会导致编译失败。

那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm- linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。

安装步骤

1、将压缩包arm-linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是 /home/song/software,如下图,记住这个路径,等会还会用到。

2、使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将software文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下如下图

通过下图可以看到解压成功了,并且解压后的文件存放在了/home/song/software/opt/FriendlyARM/toolschain/4.4.3文件夹下,如下图所示,这个存放路径可得记住,如下图

3、接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。记下上一步中的安装路径,使用命令:vim /etc/profile 编辑profile文件,添加环境变量。

在profile中最后一行添加:  export PATH=$PATH:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin  这个路径就是那个bin目录所在的路径,可能你的不一样,按照你实际的目录填就可以了,如下图32行

编写完保存就好了

4、使用命令:source /etc/profile 使环境变量生效

5、在终端上输入命令  arm-linux 再按Tab键,可以看到下图,说明环境变量设置成功了

6、使用命令:arm-linux-gcc -v 会出现下面的错误提示:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/arm- linux-gcc: 15: exec: /home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found

说是出现这种问题的原因是由于Ubuntu12.04用的是64位的,解决方法就是使用命令:sudo apt-get install ia32-libs 装一些32位的库

7、待安装完32位的库之后,再使用命令:arm-linux-gcc -v,这一次就成功了,如下图

8、验证,编译一个hello.c文件

使用命令:arm-linux-gcc hello.c -o hello 看是否编译成功

可见成功生成了二进制文件。

=======================================

主页:

http://kegel.com/crosstool/#download

http://www.kegel.com/crosstool/

http://www.kegel.com/c10k.html

==================================================

其他资料

搭建Linux开发环境

http://wiki.emsym.com/wiki/%E6%90%AD%E5%BB%BALinux%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83

构建ARM Linux交叉编译工具链

http://blog.sina.com.cn/s/blog_4a70d5d9010126si.html

ubuntu下安装交叉编译工具链的方法总结

http://blog.csdn.net/yinjiabin/article/details/7369071

交叉编译详解(版本:v1.2     by:Crifan Li)

http://www.crifan.com/files/doc/docbook/cross_compile/release/html/cross_compile.html

最新文章

  1. Unicode 和 UTF-8 有何区别?
  2. MSBI - KPI
  3. c#后台进行窗体切换的方法
  4. Windows下Php安装mongodb扩展失败
  5. Struts2中实现Web项目的初始化工作
  6. SQL 2008下载地址以及全新安装详细过程
  7. 算法导论-钢条切割 C# 递归实现
  8. winform无边框拖动
  9. 《转》读discuzx3.1 数据库层笔记
  10. CenOS配置VSFTP服务器
  11. golang mutex互斥锁分析
  12. linux 安装MySql 5.7.21 操作步骤
  13. 下拉框的change事件
  14. ValueError: setting an array element with a sequence.
  15. 小程序 canvas画本 地图片
  16. [Python2]介绍关于Uiautomator的watcher使用场景及使用方法
  17. P2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold
  18. 两个大数组foreach,找出相同的key数量,所用的时间对比
  19. SQL Server语句创建数据库和表——并设置主外键关系
  20. [洛谷P3763] [TJOI2017]DNA

热门文章

  1. Kali-Linux之开启ssh服务
  2. js之replace实现简单模板替换引擎
  3. 三个PHP常用代码样例
  4. (转)HTTP协议(2)
  5. JS获得QQ号码的昵称,头像,生日
  6. MVC之重定向
  7. 最完美解决Nginx部署ThinkPHP项目的办法
  8. codeforces 615D - Multipliers
  9. Java学习-数组
  10. stdafx.h的作用以及原理