gcc/ld/objcopy/objdump命令

本文深入探讨了ARM Linux环境下的交叉编译流程,包括gcc、ld和objcopy等工具的使用方法,以及如何通过不同选项进行预处理、编译、链接和反汇编操作。同时,介绍了如何设置输出文件名、符号信息剥离和输出目标格式。
all:
	# 
	arm-linux-gcc -c -o led_on.o led_on.S
	arm-linux-ld -Ttext 0 led_on.o -o led_on.elf
	arm-linux-objcopy -O binary -S led_on.elf led_on.bin
	arm-linux-objdump -D led_on.elf > led_on.dis
clean:
	rm *.bin *.o *.elf

统一使用选项:–help来打印帮助文档

arm-linux-gcc

  • -v
    查看gcc编译器的版本,显示gcc执行时的详细过程

  • -E
    只预处理,预处理后的文件是 .i 类型

  • -S
    只编译,编译后的文件是 .s 类型

  • -c
    编译和汇编,不会链接,生成 .o 文件

  • -o filename
    -指定输出的文件,arm-linux-gcc -o example example.c输出文件名为example,如果不指定输出文件,则默认输出a.out

举例:

gcc -E -o hello.i hello.c
gcc -S -o hello.s hello.i
gcc -c -o hello.o hello.s
gcc -o hello hello.o
  • -g
    加入GDB能够使用的调试信息,使用GDB调试时比较方便。
  • arm-linux-gcc -Wall -o example example.c
    -Wall选项打开了所有需要注意的警告信息,像在声明之前就使用的函数,声明后却没有使用的变量等。

arm-linux-ld

  • -Ttext/Tdata/Tbss ADDRESS
    设置.text/.data/.bss的地址
  • -o FILE, --output FILE Set output file name
    设置输出文件名

arm-linux-objcopy

一般用于将 .elf 转换成 .bin

  • -S --strip-all
    删除所有符号和重定位信息
  • -O binary --output-target-binary
    创建一个binary输出文件格式

arm-linux-objdump

  • -d --disassemble 打印可执行段的反汇编码
  • -D --disassemble-all 打印所有段的反汇编码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值