arm-linux-ld用于将多个目标文件、库文件连接成可执行文件。

-T 直接指定代码段、数据段、bss段的起始地址,只用于连接Bootloader、内核等没有底层软件支持的软件

连接操作系统应用程序时候,无需-T,默认连接。

1.直接指定代码段、数据段、bss段的起始地址

1
2
3
-Ttext startaddr
-Tdata startaddr
-Tbss startaddr

startaddr分别代表代码段、数据段、bss段的起始地址

eg:

1
arm-linux-ld -Ttext 0x000000 -g led_on.o -o led_on_elf

代表代码段运行地址为0x000000,没有定义数据段、bss段起始地址所以被放入代码段的后面

2.使用连接脚本设置地址

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

1、input-file、outfile分别是输入目标文件和输出目标文件,如果没有明确指定outfile,将创建一个临时文件来存放结果,用input-file的名字来命名。

2、 -l bfname或–input-target=bfdname

用来指明源文件的格式,bfdname是BFD库描述的标准格式名,如果不指明格式,会自己分析源文件格式,去和BFD中描述的各种格式比较,从而得知源文件的目标格式名。

3、-O bfdname或–output-target=bfdname

使用指定格式来输出文件,bdfname是BFD库中的标准格式名。

arm-linux-objdump用于显示二进制文件信息

未完待续。。。