需求

gcc 如何生成中间文件

解决

预处理

生成 .i 文件。

gcc -E hello.c
g++ -E test.cpp -o test.ii
# 阻止源文件和头文件中的注释
g++ -E -C test.cpp -o test.ii

编译

生成 .s 文件

gcc -S hello.c
g++ -S test.ii

g++ -S test.ii -o demo.s

g++ -S test.cpp -o test.s
# 添加必要注释
g++ -S test.cpp -o test.s -fverbose-asm

汇编

生成 .o 文件

gcc -c hello.c
g++ -c test.s

g++ -c test.s  -o test_obj.o

链接

生成 .out 文件

gcc hello.c
g++ test.o

g++ test_obj.o -o test_obj

一步生成

# -save-temps 保留所有中间文件
g++ test.cpp -save-temps

反汇编

objdump -d hello.o

参考