嵌入式Linux交叉编译环境搭建

教程 15309浏览 12评论

在搭建好 Linux 环境之后,开始写目标板程序代码之前,还得再做一件事情:搭建交叉编译环境。ubuntu

平时在电脑上用 gcc 编译出来的可执行程序只能在电脑上运行,而不能直接在 ARM 平台上运行。所以我们必须在电脑上搭建好交叉编译环境,编译出针对 ARM Linux 平台的可执行代码。

这里只对 Linux 环境下的交叉编译环境搭建进行一步一步地说明。

下载交叉编译器

http://www.veryarm.com/arm-none-linux-gnueabi-gcc 下载合适版本的交叉编译器,这里以下载arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz 为例。

交叉编译器的版本并不是随意选择,最好是跟编译目标板上的文件系统的版本一致,这样才能保证编译时用的库跟运行时用的库是一致的,否则有可能编译出来的程序在目标板上无法运行。比如:目标板文件系统是用 arm-2010q1-202 版本的交叉编译器编译,如果应用程序是用 arm-2013.11-33 版本的交叉编译器来编译,编译出来的可执行程序放到目标板上无法运行,这里需要将 arm-2013.11-33 交叉编译器的 lib 目录下的一些库复制目标板的 /usr/lib 目录下才能运行,这样应用程序运行时才能找到正确的依赖库。

解压交叉编译器

下载完 arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz 后,假设下载在 ~/toolchain 目录,执行下面命令来解压安装交叉编译器:

$ cd ~/toolchain

$ tar xvjf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz -C <TOOLCHAIN PATH>

上面的<TOOLCHAIN PATH>表示想将交叉编译器安装在哪个路径,用实际要安装的目录替换<TOOLCHAIN PATH>就可以了。

设置环境变量

安装完交叉编译器之后,接下来就是设置环境变量了,先设置 PATH 环境变量:

$ export PATH=$PATH:<TOOLCHAIN PATH>/bin

再设置 CROSS_COMPILE 环境变量;

$ export CROSS_COMPILE=arm-none-linux-gnueabi-

使用上面方法配置的环境变量只对当前的终端有效,如果另外打开一个终端或是重启终端就需要重新设置环境变量。所以如果是经常要用到的环境变量的配置,一般都直接写到 ~/.bashrc(只对当前用户有效)或者是 /etc/profile(对所有用户有效),这里假设在 ~/.bashrc 文件里配置环境变量。

用 vi 编辑器打开 ~/.bashrc,并将上面两个环境变量的配置写到该文件的末尾:

$ vi ~/.bashrc

# ......

export PATH=$PATH:<TOOLCHAIN PATH>/bin

export CROSS_COMPILE=arm-none-linux-gnueabi-

“# ......”表示 ~/.bashrc 原来的内容,把那两个环境变量的配置写到文件之后保存退出,重启终端就生效了,不需要再手动输入之前的命令来配置环境变量。

测试环境变量是否正确

配置好环境变量后,在终端输入“arm-”再连续按两次“Tab”键,如果 PATH 环境变量设置正确终端上就会有所有类似以下的输出:

$ arm-

arm-none-linux-gnueabi-addr2line    arm-none-linux-gnueabi-ar

arm-none-linux-gnueabi-as                arm-none-linux-gnueabi-c++

arm-none-linux-gnueabi-cpp             arm-none-linux-gnueabi-cs

...............

也可以运行下面命令来查看交叉编译器的版本:

$ arm-none-linux-gnueabi-gcc -v

要是发现上面的方法的用不了,输入下面命令来检查环境变量的值,检查环境变量的格式和工具的路径是否正确:

$ echo $PATH

$ echo $CROSS_COMPILE

PS: 关于 vi 编辑器的使用,欢迎参阅另一篇文章 vi编辑器快速使用指南。:)

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (12)

  1. 讲的挺详细的 就是我不太懂这个
    东北黑木耳 4年前 (2015-05-25) 回复 编辑
  2. 我来啦
    卡丝代理 3年前 (2015-07-13) 回复 编辑
  3. 学习
    松露是什么 3年前 (2015-08-04) 回复 编辑
  4. 网站不错很漂亮,欢迎互访!
    最励志官网 3年前 (2015-08-31) 回复 编辑
  5. 不错 学习了!
    歪妖内涵网 3年前 (2015-09-01) 回复 编辑
  6. 终端输入 arm- 后 按tab可以正常填充 ,但是运行的话提示 “-bash: ./arm-none-linux-gnueabi-gcc: No such file or directory” 呢?
    p0w3r 3年前 (2015-09-17) 回复 编辑
  7. 秒赞不是偶然,是一种态度!
    内涵段子 3年前 (2015-10-02) 回复 编辑
  8. 顶你一下,好贴要顶!
    普拉提美女 3年前 (2015-10-06) 回复 编辑
  9. 不错!不错!不错!
    之遥 3年前 (2016-01-04) 回复 编辑
  10. 不知咋就找到你的博客了 还挺不错 [给力]
    无聊赚 3年前 (2016-01-30) 回复 编辑