arm-linux-gcc交叉编译工具链的制作及使用

时间:2021-09-03 07:50:16

1、交叉编译的四个过程:

预处理:arm-linux-gcc -E;完成头文件和宏定义的替换,生成.i文件。

汇编:arm-linux-gcc -S;生成汇编代码,即 .s文件。

编译:arm-linux-gcc -c ;生成ELF二进制文件。

链接:arm-linux-gcc   ;链接相关的库文件生成最终的可执行文件。

2、binutils工具:

arm-linux-strip:瘦身工具,删除不需要的编译符号和描述信息;

例如:arm-linux-strip test;

arm-linux-objcopy:将生成的二进制文件(.ELF)转化为只含有二进制指令和程序数据的.bin文件。

例如:arm-linux-objcopy -O binary -S test test.bin

arm-linux-dumb:反编译,将二进制文件反汇编成汇编文件。

例如:arm-linux-dumb -D test > test.dis 便于代码的查看与运行。

arm-linux-eadelf  :获取ELF文件的头信息;

例如:arm-linux-readelf -atest;

3、通过crosstool制作交叉编译工具链

    1、准备Crosstool源代码和补丁文件,然后用patch打补丁

#sudo apt-get install flex bison  //安装语法解析器

#sudo apt-get install patch    //安装打补丁工具

#tar -xzvf crosstool包;

#cp 补丁文件 Crosstool/patch/glibc

#patch

   2、准备相关的源代码文件

      gcc   glibc  binutils linux内核 glibc-linuxthreads linux-libc-headers 等包文件

  3、修改Crosstool脚本:

     1、gcc版本的修改:

     2、修改Crosstool文件夹中的demo-arm-softfloat.sh脚本、arm-softfloat.dat、all.sh脚本

     3、编译安装:

a、在/usr/local目录下创建arm文件夹:mkdir /usr/local/arm

b、进入Crosstool目录并执行:cd crosstool    ./damo-arm-softfloat.sh   (1小时左右,耐心等待)

c、配置环境变量。