arm-linux -ld、-objcopy和obdump
arm-linux-ld用于将多个目标文件、库文件连接成可执行文件。
-T 直接指定代码段、数据段、bss段的起始地址,只用于连接Bootloader、内核等没有底层软件支持的软件
连接操作系统应用程序时候,无需-T,默认连接。
1.直接指定代码段、数据段、bss段的起始地址
1 | -Ttext 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用于显示二进制文件信息
未完待续。。。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 涵风 Blog!