嵌入式Linux交叉编译工具连详细制作过程

上传人:橙** 文档编号:333363070 上传时间:2022-09-01 格式:PDF 页数:9 大小:272.17KB
返回 下载 相关 举报
嵌入式Linux交叉编译工具连详细制作过程_第1页
第1页 / 共9页
嵌入式Linux交叉编译工具连详细制作过程_第2页
第2页 / 共9页
嵌入式Linux交叉编译工具连详细制作过程_第3页
第3页 / 共9页
嵌入式Linux交叉编译工具连详细制作过程_第4页
第4页 / 共9页
嵌入式Linux交叉编译工具连详细制作过程_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《嵌入式Linux交叉编译工具连详细制作过程》由会员分享,可在线阅读,更多相关《嵌入式Linux交叉编译工具连详细制作过程(9页珍藏版)》请在金锄头文库上搜索。

1、6.2.3 详细步骤(1)分布构建交叉编译链的具体步骤如下。1.建立工作目录首先建立工作目录,建立工作目录以存放所需要的文件,有利于文件的分类和管理。创建目录使用mkdir 命令进行。这里目录名的选择可根据需要选择。以下所建立的目录是作者自定义的,由于当前的用户定义为arm,因此用户目录为/home/arm,在用户目录下首先建立一个工作目录(armlinux),建立工作目录的命令行操作如下。1.#cd/home/arm 2.#mkdir armlinux 再在这个工作目录armlinux 下建立三个目录build-tools、kernel 和 tools。具体操作如下。1.#cd armlin

2、ux 2.#mkdir build-tools kernel tools 其中各目录的作用如下。build-tools 用来存放下载的 binutils、gcc、glibc 等源代码和用来编译这些源代码的目录。kernel用来存放内核源代码。tools 用来存放编译好的交叉编译工具和库文件。2.建立环境变量建立环境变量主要是用来将其定义为经常使用的路径,这是Linux 系统命令中的一大优点。可利用环境变量直接代表路径,这样可以避免重复输入冗长的命令,简化输入过程,尤其可以降低输错路径的概率。下面用PRJROOT代表/home/arm/armlinux,TARGET 代表arm-linux,PR

3、EFIX代表/home/arm/armlinux/tools,TARGET_PREFIX 代表/home/arm/armlinux/tools/arm-linux,PATH 代表在原有 PATH 变量之前添加路径/home/arm/armlinux/tools/bin:。1.#export PRJROOT=/home/arm/armlinux 2.#export TARGET=arm-linux 3.#export PREFIX=$PRJROOT/tools 4.#export TARGET_PREFIX=$PREFIX/$TARGET 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页

4、,共 9 页 -5.#export PATH=$PREFIX/bin:$PATH 这里需要注意的是,用export 声明的变量是临时的变量,当注销或更换了控制台时,这些环境变量就不存在了。如果还需要使用这些环境变量就必须重复进行 export 设置。但是可以将环境变量定义在bashrc文件中,这样当注销或更换控制台时,这些变量就一直有效,就不用再重新设置了。3.编译、安装 BinutilsBinutils 是 GNU 工具之一,它包括连接器、汇编器和其他用于目标文件和档案的工具,它是二进制代码的处理维护工具。安装Binutils 工具包含的程序有addr2line、ar、as、c+filt、g

5、prof、ld、nm、objcopy、objdump、ranlib、readelf、size、strings、strip、libiberty、libbfd 和 libopcodes。对这些程序的简单解释如表6-2 所示。表 6-2 Binutils 工具集程序名解释addr2line 把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号ar 建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证可以恢复原始文件内容as 主要用来编译 gcc输出的汇编文件,产生的目标文件由连接器ld

6、连接c+filt 连接器使用它来过滤C+和 Java符号,防止重载函数冲突gprof 显示程序调用段的各种数据ld 是连接器,它把一些目标和归档文件结合在一起,重定位数据,并连接符号引用。通常,建立一个新编译程序的最后一步就是调用ld nm 列出目标文件中的符号(续表)程序名解释objcopy 显示一个或者更多目标文件的信息。使用选项来控制其显示的信息,它所显示的信息通常只有编写编译工具的人才感兴趣名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -objdump 显示一个或者多个目标文件的信息。编写编译工具的用户使用该选项来控制其显示的目标文件的信息ranlib 产生归档

7、文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件readelf 显示 elf 格式可执行文件的信息size 列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出strings 打印某个文件的可打印字符串,这些字符串最少 4 个字符长,也可以使用选项-n 设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其他类型的文件,它打印整个文件的可打印字符。这个程序对于了解非文本文件的内容很有帮助libiberty 包含许多 GNU 程序都会用到的函数,这些程序有geto

8、pt、obstack、strerror、strtol 和 strtoul。libbfd 二进制文件描述库libopcode 用来处理 opcodes的库,在生成一些应用程序的时候也会用到它strip 丢弃目标文件中的全部或者特定符号Binutils 工具安装依赖于 Bash、Coreutils、Diffutils、GCC、Gettext、Glibc、Grep、Make、Perl、Sed、Texinfo 等工具。介绍完 Binutils 工具后,下面将分步介绍安装Binutils-2.16 的过程。首先解压 Binutils-2.16.tar.bz2 包,命令如下。1.#cd$PRJROOT/b

9、uild-tools 2.#tar-xjvf binutils-2.16.tar.bz2 接着配置 Binutils 工具,建议建立一个新的目录用来存放配置和编译文件,这样可以使源文件和编译文件独立打开,具体操作如下。1.#cd$PRJROOT/build-tools 2.#mkdir build-binutils 3.#cd build-binutils 4.#./binutils-2.16/configure-target=$TARGET-prefix=$PREFIX 6.2.3 详细步骤(2)名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -http:/ 2010-

10、08-06 23:09 贺丹丹/张帆/刘峰清华大学出版社我要评论(0)摘要:嵌入式 Linux 系统开发教程第 6 章交叉编译工具,本章就将详细介绍有关交叉工具的内容,包括交叉编译的工具链软件和交叉编译链的构建方法等。本小节为大家介绍详细步骤。标签:Linux 系统开发嵌入式 Linux 系统开发教程6.2.3 详细步骤(2)其中选项-target的意思是制定生成的是arm-linux 的工具,-prefix 是指出可执行文件安装的位置。执行上述操作会出现很多check信息,最后产生 Makefile文件。接下来执行make和安装操作,命令如下。1.#make 2.#make install

11、该编译过程较慢,一般需要数十分钟,具体视机器而定。安装完成后查看/home/arm/armlinux/tools/bin 目录下的文件,如果查看结果如下,表明此时Binutils 工具已经安装结束。1.#ls$PREFIX/bin 2.arm-linux-addr2line arm-linux-ld arm-linux-ranlib arm-linux-strip 3.arm-linux-ar arm-linux-nm arm-linux-readelf 4.arm-linux-as arm-linux-objcopy arm-linux-size 5.arm-linux-c+filt arm

12、-linux-objdump arm-linux-strings 4.获得内核头文件编译器需要通过系统内核的头文件来获得目标平台所支持的系统函数,调用所需要的信息。对于Linux 内核,最好的方法是下载一个合适的内核,然后复制获得头文件。需要对内核做一个基本的配置来生成正确的头文件。对于本例中的目标 arm-linux,需要以下两个步骤。(1)在 kernel 目录下解压 linux-2.6.15.tar.gz 内核包,执行命令如下。1.#cd$PRJROOT/kernel 2.#tar-xvzf linux-2.6.15.tar.gz 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页

13、,共 9 页 -(2)接下来配置编译内核使其生成正确的头文件,执行命令如下。1.#cd linux-2.6.15 2.#make ARCH=armCROSS_COMPILE=arm-linux-menuconfig其中ARCH=arm 表示是以 arm为体系结构,CROSS_COMPILE=arm-linux-表示是以 arm-linux-为前缀的交叉编译器。也可以用config 和 xconfig 来代替menuconfig,推荐用 make menuconfig。在配置时要选择处理器的类型,因为S3C2440与 S3C2410有很多的相同之处,所以这里选择三星的S3C2410(System

14、 Type-ARM System Type-/Samsung S3C2410),如图 6-2 所示。配置完退出并保存,检查一下内核目录中的include/linux/version.h 和 include/linux/autoconf.h 文件是不是生成了,这是编译glibc 时要用到的,如果这两个文件存在,说明生成了正确的头文件。(点击查看大图)图6-2 Linux 内核配置界面复制头文件到交叉编译工具链的目录,首先需要在/home/arm/armlinux/tools/arm-linux 目录下建立工具的头文件目录inlcude,然后复制内核头文件到此目录下,具体操作如下。1.#mkdir

15、-p$TARGET_PREFIX/include 2.#cp-r$PRJROOT/kernel/linux-2.6.15/include/linux$TARGET_PREFIX/include 3.#cp-r$PRJROOT/kernel/linux-2.6.15/include/asm-arm$TARGET_PREFIX/include/asm 5.编译安装 boot-trap gcc名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 9 页 -这一步的目的主要是建立arm-linux-gcc 工具,注意这个gcc没有 glibc 库的支持,所以只能用于编译内核、BootLoade

16、r等不需要 C 库支持的程序,后面创建 C 库也要用到这个编译器,所以创建它主要是为创建C 库做准备,如果只想编译内核和 BootLoader,那么安装完这个就可以到此结束。安装命令如下。1.#cd$PRJROOT/build-tools 2.#tar-xvzf gcc-4.1.0.tar.gz 3.#mkdir build-gcc 4.#cd gcc-4.1.0 由于是第一次安装ARM 交叉编译工具,没有支持 glibc 库的头文件,所以需要修改 t-linux 文件。用 vi 或者 gedit 打开文件。1.#vi gcc/config/arm/t-linux 在 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-fr

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号