交叉编译指在一个平台上生成另一个平台上的可执行代码。常见的有三种:
- 在Windows PC上,利用集成开发环境(ADS),运行armcc编译器,编译出针对ARM CPU的可执行代码
- 在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,编译出针对ARM CPU 的可执行代码
- 在Linux PC上,利用arm-linux-gcc编译器,编译出针对Linux ARM平台的可执行代码
交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc 3部分组成。
本文使用Crosstool-ng在Ubuntu系统中构建用于ARM平台的交叉编译工具链。
- 交叉编译工具:arm-linux-6.3.0
- 编译平台:Ubuntu 14.04.4 LTS
- 目标平台:S3C6410
- crosstool-ng-1.23.0
一 、下载安装crosstool-ng
-
从crosstool-ng官网或github上下载最新版本。
~/arm-linux-tools$ wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.23.0.tar.bz2
-
解压源码,进入源码目录
~/arm-linux-tools$ tar jxvf crosstool-ng-1.23.0.tar.bz2 ~/arm-linux-tools$ cd crosstool-ng-1.23.0/
-
安装编译依赖包
sudo apt-get install sed bash dpkg-dev bison flex patch texinfo automake m4 libtool cvs websvn tar gzip bzip2 lzma libncurses5-dev bison flex texinfo automake libtool patch cvs cvsd gperf help2man gawk
安装中提示如下错误:
dpkg: error processing package websvn (–configure):
subprocess installed post-installation script returned error exit status 1
E: Sub-process /usr/bin/dpkg returned an error code (1)解决:
$ sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/ $ sudo mkdir /var/lib/dpkg/info/ $ sudo apt-get update
-
执行编译三部曲
./configure --prefix=/opt/crosstool-ng make sudo make install