嵌入式Linux应用开发完全手册读书笔记——交叉编译工具选项说明

交叉编译工具选项说明

arm-linux-gcc

一个c/c++文件要变成可执行文件需要4步:预处理 -> 编译 -> 汇编 -> 链接;

在使用arm-linux-gcc时的常用选项:

可使用的选项 功能描述
-c 预处理、编译和汇编文件,但是不作链接,GCC通过用“.o”替换源文件名的后缀“.c”,“.i”,“.s”等生成OBJ文件(.o文件)
-S 编译后即停止,不进行汇编, 对于每个输入的非汇编语言文件,输出结果是汇编语言文件。默认情况下,GCC通过用“.s”替换源文件名后缀“.c”,“.i”等,产生汇编文件
-E 预处理后即停止,不进行编译
-o 指定输出文件的文件名,无论是预处理、编译、汇编还是链接,这个选项都可以使用
-Wall 基本打开了所有需要注意的警告信息
-nostdlib 不链接系统标准启动文件和标准库文件,只把指定的文件传递给链接器,这个选项常用于编译内核、bootloader等程序,它们不需要启动文件、标准库文件
-g 以操作系统的本地格式产生调试信息,供GDB调试使用
arm-linux-ld

用于将多个目标文件、库文件链接成可执行文件;

”-T“选项,可以直接使用它来指定代码段(-Ttext)、数据段(-Tdata)、bss段(-Tbss)的起始地址,也可以用来指定一个链接脚本,在链接脚本中进行更复杂的地址设置;

注:”-T“选项只用于链接Bootloader、内核等没有底层软件支持的软件,链接运行于操作系统之上的应用程序时,无需指定”-T“选项,它们使用默认的方式进行链接;

arm-linux-objcopy

用来复制一个目标文件的内容到另一个文件中,可以使用不同于源文件的格式来输出目的文件,即可以进行格式转换;

常用arm-linux-objcopy来将ELF格式的可执行文件转换为二进制文件;

格式:-O bfdname 或 --output-target=bfdname(使用指定的格式来输出文件,bfdname是BFD库中描述的标准格式名,例”arm-linux-objcopy -O binary xxx.elf xxx.bin“);

arm-linux-objdump

用于显示二进制文件信息,常用于查看反汇编代码;

常用选项是:

选项 功能描述
-b 指定目标码格式
-D 反汇编所有段
-m 指定反汇编目标文件时使用的架构

例:

  1. 将ELF格式的文件转换为反汇编文件:

    arm-linux-objdump -D elf_file.elf > dis_file.dis

  2. 将二进制文件转换为反汇编文件:

    arm-linux-objdump -D -b binary -m arm bin_file.bin > dis_file.dis

posted @ 2019-07-18 15:54  SKILL-RABBIT  阅读(203)  评论(0编辑  收藏  举报