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

构建ARM Linux交叉编译工具链

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

ld-tools kernel tools

其中各目录的作用如下。

● build-tools 用来存放下载的binutils、gcc、glibc等源代码和用来编译这些源代码的目录;

● kernel 用来存放内核源代码;

● tools 用来存放编译好的交叉编译工具和库文件。

2.建立环境变量

该步骤的目的是为了方便重复输入路径,因为重复操作每件相同的事情总会让人觉得很麻烦,如果读者不习惯使用环境变量就可以略过该步,直接输入绝对路径就可以。声明以下环境变量的目的是在之后编译工具库的时候会用到,很方便输入,尤其是可以降低输错路径的风险。

# export PRJROOT=/home/mike/armlinux

# export TARGET=arm-linux

# export PREFIX=$PRJROOT/tools

# export TARGET_PREFIX=$PREFIX/$TARGET

# export PATH=$PREFIX/binPATH

注意,用export声明的变量是临时的变量,也就是当注销或更换了控制台,这些环境变量就消失了,如果还需要使用这些环境变量就必须重复export操作,所以有时会很麻烦。值得庆幸的是,环境变量也可以定义在bashrc文件中,这样当注销或更换控制台时,这些变量就一直有效,就不用老是export 这些变量了。

3.编译、安装Binutils

Binutils 是GNU工具之一,它包括连接器、汇编器和其他用于目标文件和档案的工具,它是二进制代码的处理维护工具。安装Binutils工具包含的程序有 addr2line、ar、as、c++filt、gprof、ld、nm、objcopy、objdump、ranlib、readelf、size、 strings、strip、libiberty、libbfd和libopcodes。对这些程序的简单解释如下。

● addr2line 把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。

● ar 建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。

● as 主要用来编译GNU C编译器gcc输出的汇编文件,产生的目标文件由连接器ld连接。

● c++filt 连接器使用它来过滤 C++ 和 Java 符号,防止重载函数冲突。

● gprof 显示程序调用段的各种数据。

● ld 是连接器,它把一些目标和归档文件结合在一起,重定位数据,并连接符号引用。通常,建立一个新编译程序的最后一步就是调用ld。

● nm 列出目标文件中的符号。

● objcopy 把一种目标文件中的内容复制到另一种类型的目标文件中。

● objdump 显示一个或者更多目标文件的信息。使用选项来控制其显示的信息,它所显示的信息通常只有编写编译工具的人才感兴趣。

● ranlib 产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。

● readelf 显示elf格式可执行文件的信息。

● size 列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。

● strings 打印某个文件的可打印字符串,这些字符串最少4个字符长,也可以使用选项-n设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其他类型的文件它打印整个文件的可打印字符。这个程序对于了解非文本文件的内容很有帮助。

● strip 丢弃目标文件中的全部或者特定符号。

● libiberty 包含许多GNU程序都会用到的函数,这些程序有getopt、obstack、strerror、strtol和strtoul。

● libbfd 二进制文件描述库。

● libopcode 用来处理opcodes的库,在生成一些应用程序的时候也会用到它。

Binutils工具安装依赖于Bash、Coreutils、Diffutils、GCC、Gettext、Glibc、Grep、Make、Perl、Sed、Texinfo等工具。

介绍完Binutils工具后,下面将分步介绍安装binutils-2.15的过程。

首先解压binutils-2.15.tar.bz2包,命令如下:

# cd $PRJROOT/build-tools

# tar –xjvf binutils-2.15.tar.bz2

接着配置Binutils工具,建议建立一个新的目录用来存放配置和编译文件,这样可以使源文件和编译文件独立开,具体操作如下:

# cd $PRJROOT/build-tools

# mkdir build-binutils

# cd build-binutils

# ../ binutils-2.15/configure --target=$TARGET --prefix=$PREFIX

其中选项–target的意思是制定生成的是 arm-linux 的工具,--prefix 是指出可执行文件安装的位置。执行上述操作会出现很多check信息,最后产生 Makefile 文件。接下来执行make和安装操作,命令如下:

# make

# make install

该编译过程较慢,需要数十分钟,安装完成后查看/home/mike/armlinux/tools/bin目录下的文件,如果查看结果如下,表明此时Binutils工

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

网站地图

Top