arm-linux-gcc
arm-linux-gcc -o hello hello.c 可直接生成可执行文件 hello
arm-linux-gcc -v -o hello hello.c 可以观看编译细节
> 总体选项
-c:预处理,编译和汇编源文件,但不做连接,编译器根据源文件生成OBJ文件
-S:编译后停止
-E:预处理后停止
-o file :指定输出文件 file
-v:显示编译细节
>警告选项
-Wall
>调试选项
-g
>优化选项
-O、-O1
-O2
-O3
-O0
>连接器选项
object-file-name
eg:gcc -o test main.o sub.o
-I library :连接名为 library 的库文件
-nostartfiles : 不连接系统标准启动文件,二标准库文件仍然正常使用
-nostdlib : 不连接系统标准启动文件和标准库文件,只把指定的文件传递给连接器
-static : 在支持动态连接的系统上阻止连接共享库
-shared : 生成一个共享OBJ文件,它可以和其他OBJ文件连接产生可执行文件
-Xlinker option : 把选项option传递给连接器
-Wl ,option : 把选项option传递给连接器
-u symbol : 使连接器认为取消了 symbol 的符号定义,从而连接库文件以取得定义
>目录选项
-I dir :在文件的搜索路径中加上dir路径
-I-
-L dir :在-I 选项的搜索路径列表中添加 dir 目录
-B prefix :指出在何处寻找可执行文件、库文件以及编译器自己的数据文件
gcc-linux-ld
将多个目标文件、库文件连接成可执行文件
> -T 选项
只用于连接 bootloader、内核等 “没有底层软件支持”的软件
连接运行于操作系统之上的应用时,无需指定 -T选项
-Ttext startaddr
-Tdata startaddr
-Tbss startaddr
startaddr 表示代码段、数据段、bss段的起始地址
arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf
运行在 0x0000000 地址上
gcc-linux-objcopy
复制一个目录文件的内容到另一个文件中;可进行格式转换
gcc-linux-objdump
显示二进制文件信息,查看反汇编代码 |