gcc选项及规则

-pipe 利用管道优化编译过程

-M  递归打印文件所包含的头文件

-MM 打印头文件不递归

-E 预处理

-S 编译成汇编代码

-c  汇编成机器码

-v  查看执行细节

-g  增加调试信息

-o  指定输出文件名

-dM-E  查找某个宏定义

-Wall  打开所有警告

-Werror  所有警告认为是错误

-O0 不优化

-O/-O1

-O2

-O3

-llib  链接库

-L

-nostartfiles  不链接启动文件 在制作BootLoader 内核时使用 

-nostdlib

-nostdinc

-static 在支持动态库的机器上,禁止链接动态库而采用静态方式链接

-shared 制作动态库

-Xlinker option 将参数传给连接器。gcc无法识别,故需选项参数分别制定  -Xlinker option  -Xlinker arg1 -Xlinker arg2

-Wl,option 把选项传给连接器  多个参数间用逗号隔开

-u symbol  使链接器认为取消了symbol符号的定义,从而链接器库模块以取得定义

-Idir 制定头文件搜索路径   -Idir1  -I-  -Idir2    dir1只能搜索 #include“file”   dir2可以搜索任意#include

-L  指定库文件搜索路径

-Bprefix  指定gcc所调用用具的前缀 ,未找到时,可使用GCC_EXEC_PREFIX环境变量

ld,arm-linux

-Ttext  startaddr  指定代码段起始地址

-Tdata dataaddr  指定数据段起始地址

-T bss  bssaddr   指定bss段起始地址


-m32 64位机器上产生32位代码


$@  目标

$<   第一个依赖

$^    所有依赖


-T指定链接脚本

链接脚本完整格式

SECTIONS {
...
secname start ALIGN(align) (NOLOAD) : AT(ldadr)
{ contents } >region :phdr =fill
...

}

secname 段名

start 重定位地址  对于位置相关代码,重定位地址必须为代码内实际地址

ALIGN(align) 起始地址对齐

(NOLOAD)运行时不需要加载

AT(ldadr) 指定此段位于映像文件中的地址,不指定时默认为运行地址

{ contents }  确定obj文件中哪些内容存入本段


arm-linux-objcopy 被用来拷贝一个目标文件的内容到另一个文件中, 可以使用不同于源文件的格式来输出目的文件,即可以进行格式转换 

input-file  outfile指定输入输出文件名
-I   指定输入格式
-O  指定输出格式
-F   指定输入=输出格式
-R   sectionname   删掉sectionname段
-S  删除重定位信息和符号信息
-g  删除调试符号

arm-linux-objdump

-b   指定目标码格式

-d  反汇编可执行段

-D 反汇编所有段

-EB  指定大端字节序  -EL指定小段字节序

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

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

-i   显示支持的目标文件格式和cpu架构

-j name  仅显示指定section的信息

-m machine  当待反汇编文件未指定架构信息时 手动指定

eg1  arm-linux-objdump -D  elf_file > dis_file

eg2  arm-linux-objdump -D -b binary -m arm bin_file > dis_file

arm-linux-objcopy

#define fastcall __attribute__((regparm(3))) 用于修饰函数 表示从寄存器获取参数

#define asmlinkage __attribute__((regparm(0))) 用于修饰函数 表示从堆栈获取参数

#define __weak __attribute__((weak))用于修饰函数弱符号类型遇强则强 无强弱顶


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值