Arm-linux-xx编译工具用法


Arm-linux-gcc:

这个命令是程序的包装,它会根据不同的参数要求去调用预编译编译程序cc1(预处理+编译),汇编器arm-linux-as,链接器arm-linux-ld.

GCC的常用选项:

-E: 仅作预处理,不进行编译,汇编和链接。

-S: 编译到汇编语言,不进行汇编和链接

-c: 编译、汇编到目标代码,不进行链接

-o: 设置输出文件名(默认是a.out

-W: 设置警告。用-W all 开启所有的警告。

-I dir 添加头文件目录路径(I是i的大写)

-I library:参数library是函数库的路径(是L的小写l)。                          

-L dir:添加库目录路径

-g:加入调试信息。程序必须有这个参数,才能被调试)

-O-O2-O3O0: 对代码进行优化。其中数字代表等级,0表示不优化。

-nostartfiles: 不链接系统标准启动文件,而标准库文件仍然正常使用。(注:对于一般的应

用程序,这些启动文件是必须的。在编译bootloader、内核时,需要使用这个 选项)

-nostdlib: 不连接系统标准启动文件和标准库文件,只把指定的文件传递给连接器。(注: 这个选项常用于编译内核,bootloader等程序,它们不需要启动文件,标准库 文件)

-static: 以静态方式连接目标文件。

-share: 生成一个共享OBJ文件。


arm-linux-ld:

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

常用参数:

-T : 用来指定代码段、数据段、bss段的起始地址,也可以用来指定一个连接脚本(注: 只用于连接bootloader、内核等没有底层软件支持的软件。

Eg: arm-linux-ld -Ttext 0x0000000 -g hello.o

arm- linux-ld -Tdate 0x00000 -g hello.o

arm-linux-ld -Tbss 0x0000 -g hello.o

-nostdlib:

-nostartfiles

arm-linux-objcopy:

用来复制一个目标文件的内容到另一个文件中,可以进行格式转换

一般用来只复制执行代码到一个文件中

常有选项:

-O: 用来指定输出文件的格式

-S 不从源文件中复制重定位信息和符号信息到目标文件中去

-g  不复制调试信息

Eg: arm-linux-objcope -O binary -S SrcFile DesFile (SrcFile是一个二进制文件,如:a.out)

arm-linux-objdump:

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

常用选项:

-d: 反汇编可执行代码

-D: 反汇编所有段

-EBEB指定字节序 即big|little endian

-f: 显示文件的整体头部摘要信息

-h: 显示目标文件各个段的头部摘要信息

Eg: arm-linux-objdump -d hello.bin >hello.dis //查看hello.bin的汇编代码

猜你喜欢

转载自blog.csdn.net/u012681014/article/details/45868541
今日推荐