微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 构建ARM Linux交叉编译工具链

构建ARM Linux交叉编译工具链

时间:11-09 来源:互联网 点击:

具已经安装结束。

# ls $PREFIX/bin

arm-linux-addr2line arm-linux-ld arm-linux-ranlib arm-linux-strip

arm-linux-ar arm-linux-nm arm-linux-readelf

arm-linux-as arm-linux-objcopy arm-linux-size

arm-linux-c++filt arm-linux-objdump arm-linux-strings

4.获得内核头文件

编译器需要通过系统内核的头文件来获得目标平台所支持的系统函数调用所需要的信息。对于Linux内核,最好的方法是下载一个合适的内核,然后复制获得头文件。需要对内核做一个基本的配置来生成正确的头文件;不过,不需要编译内核。对于本例中的目标arm-linux,需要以下步骤。

(1)在kernel目录下解压linux-2.6.10.tar.gz内核包,执行命令如下:

# cd $PRJROOT/kernel

# tar –xvzf linux-2.6.10.tar.gz

(2)接下来配置编译内核使其生成正确的头文件,执行命令如下:

# cd linux-2.6.10

# make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig

其中ARCH=arm表示是以arm为体系结构,CROSS_COMPILE=arm-linux-表示是以arm-linux-为前缀的交叉编译器。也可以用config和xconfig来代替menuconfig,推荐用make menuconfig,这也是内核开发人员用的最多的配置方法。注意在配置时一定要选择处理器的类型,这里选择三星的S3C2410(System Type->ARM System Type->/Samsung S3C2410),如图2.1所示。配置完退出并保存,检查一下内核目录中的include/linux/version.h和 include/linux/autoconf.h文件是不是生成了,这是编译glibc时要用到的,如果version.h 和 autoconf.h 文件存在,说明生成了正确的头文件。

复制头文件到交叉编译工具链的目录,首先需要在/home/mike/armlinux/tools/arm-linux目录下建立工具的头文件目录inlcude,然后复制内核头文件到此目录下,具体操作如下:

# mkdir –p $TARGET_PREFIX/include

# cp –r $PRJROOT/kernel/linux-2.6.10/include/linux $TARGET_PREFIX/include

# cp –r $PRJROOT/kernel/linux-2.6.10/include/asm-arm $TARGET_PREFIX/include/asm

5.编译安装boot-trap gcc

这一步的目的主要是建立arm-linux-gcc工具,注意这个gcc没有glibc库的支持,所以只能用于编译内核、BootLoader等不需要C库支持的程序,后面创建C库也要用到这个编译器,所以创建它主要是为创建C库做准备,如果只想编译内核和BootLoader,那么安装完这个就可以到此结束。安装命令如下:

# cd $PRJROOT/build-tools

# tar –xvzf gcc-3.3.6.tar.gz

# mkdir build-gcc

# cd gcc-3.3.6

# vi gcc/config/arm/t-linux

由于是第一次安装ARM交叉编译工具,没有支持libc库的头文件,所以在gcc/config/arm/t- linux文件中给变量TARGET_LIBGCC2_CFLAGS增加操作参数选项-Dinhibit_libc -D__gthr_ posix_h来屏蔽使用头文件,否则一般默认会使用/usr/inlcude头文件。

将TARGET_LIBGCC2-CFLAGS = -fomit-frame-pointer –fPIC改为TARGET_LIBGCC2- CFLAGS=-fomit-frame-pointer–fPIC -Dinhibit_libc -D__gthr_posix_h

修改完t-linux文件后保存,紧接着执行配置操作,如下命令:

# cd build-gcc

# ../ build-gcc /configure --target=$TARGET --prefix=$PREFIX --enable-languages=c

--disable-threads --disable-shared

其中选项--enable-languages=c表示只支持C语言,--disable-threads表示去掉thread功能,这个功能需要glibc的支持。--disable-shared表示只进行静态库编译,不支持共享库编译。

接下来执行编译和安装操作,命令如下:

# make

# make install

安装完成后,在/home/mike/armlinux/tools/bin下查看,如果arm-linux-gcc等工具已经生成,表示boot-trap gcc工具已经安装成功。

6.建立glibc库

glibc是GUN C库,它是编译Linux系统程序很重要的组成部分。安装glibc-2.3.2版本之前推荐先安装以下的工具:

● GNU make 3.79或更新;

● GCC 3.2或更新;

● GNU binutils 2.13或更新。

首先解压glibc-2.2.3.tar.gz和glibc-linuxthreads-2.2.3.tar.gz源代码,操作如下:

# cd $PRJROOT/build-tools

# tar -xvzf glibc-2.2.3.tar.gz

# tar -xzvf glibc-linuxthreads-2.2.3.tar.gz --directory=glibc-2.2.3

然后进行编译配置,glibc-2.2.3配置前必须新建一个编译目录,否则在glibc-2.2.3目录下不允许进行配置操作,此处在$PRJROOT/build-tools目录下建立名为build-glibc的目录,配置操作 如下:

# cd $PRJROOT/build-tools

# mkdir build-glibc

# cd build-glibc

# CC=arm-linux-gcc ../glibc-2.2.3 /configure --h

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top