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、配置环境变量。