gcc/ld/objcopy/objdump命令

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 打印所有段的反汇编码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux/Unix-like系统中,`export`命令用于设置环境变量,它允许你在当前 shell 或子shell 中更改环境变量的值。这些变量会影响后续命令的行为,特别是与编译器工具链相关的。 - **AS** (Assembler): 指的是汇编程序,如`as`,它用于将高级语言源代码转换为机器语言的可执行文件的中间表示形式。 - **LD** (Linker): 如`ld`,它负责连接程序的各个部分,包括库文件,形成可执行文件。 - **CC** (C Compiler): 如`gcc`,它是C语言编译器,用于编译C源代码。 - **CPP** (Preprocessor): 也称为`cpp`,是C/C++编译过程中的预处理器,处理包含宏定义、条件编译指令等的源代码。 - **AR** (Archiver): 如`ar`,如引用所说,用于创建、更新和提取库文件,管理库的成员。 - **NM** (Name List): `nm`命令用于显示链接对象或库中的符号名,如全局变量、函数等。 - **STRIP**: 用于删除二进制文件中的调试符号,减小文件大小,提高运行速度。 - **OBJCOPY**: 用于复制和转换二进制文件,如将可重定位文件转换为可执行文件或二进制文件到十六进制文件。 - **OBJDUMP**: 用于反汇编二进制文件,查看其内部结构。 要使用这些工具,通常在终端中输入相应的命令并指定参数。例如,要编译C源文件并链接,你可以这样操作: ```shell gcc -o output_file source_file.c ``` 然后,如果你想查看编译后的可执行文件的符号信息,可以使用`objdump`: ```shell objdump -t output_file ``` 设置环境变量`export`通常是在编辑器配置文件(如`.bashrc`或`.bash_profile`)中进行,以便在打开新终端会话时自动生效: ```bash export AS=/path/to/your/as export LD=/path/to/your/ld # ... 其他变量设置 ... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值