Skip to content
On this page

GCC编译工具集


标签:clang/basic  

gcc

提示警告:-Wall

bash
# 一步编译, 默认的输出文件名是 a.out
gcc test.c
# 一步编译, 使用 -o 指定输出的文件名
gcc -o test test.c
bash
# 分步编译, 预处理
# .i 文件是一个, 预处理展开, 宏替换开, 删除注释后的代码文件
gcc -E test.c -o test.i
# 分步编译, 编译到汇编语言
gcc -S test.i -o test.s
# 分步编译, 编译到二进制文件
gcc -c test.s -o test.o
# 分步编译, 编译到可执行文件
gcc test.o -o test

ld

  • 链接器,链接库文件到可执行文件
  • ld -Ttext=0xc0008000 asm-led.o -o asm-led.elf

objdump

  • 用来分析和二进制文件
  • 可以显示二进制文件中的各个 section 以及各个每个 section 中的符号,指令,数据等信息
  • 可以输出多种格式的信息,比如十六进制格式,反汇编格式,源代码格式
  • objdump -D asm-led.elf > asm-led.dis

objcopy

  • 用来复制,转换和修改二进制文件
  • 创建一个新的二进制文件,并修改其中的代码,数据和符号表
  • 比如重新定位目标文件的转换为静态库,将ELF格式的可执行文件转换为 bin 格式的镜像文件等
  • objcopy -O binary asm-led.elf asm-led.bin

strip

  • 压缩文件大小
  • 将去掉符号表等对运行不影响的信息
  • 压缩后的可执行文件或者库文件不适用于调试
  • 仅在 release 的程序或库中使用
  • strip asm-led.elf

nm

  • 查看符号表信息
  • nm asm-led.elf

size

  • 查看各个段的大小
  • size asm-led.elf

readelf

  • 查看头部信息
  • readelf -h asm-led.elf

addr2line

  • 用于将程序地址转换为源代码中对应的行号和函数名
  • 基本格式是:addr2line c0008164 -e asm-led.elf -f

Last updated: