- 1、准备工作
- 2、将源文件 test.c 文件预处理生成 test.i
- 3、将预处理生成的 test.i 文件编译生成汇编程序 test.s
- 4、将编译生成的 test.s 文件汇编生成目标文件 test.o
- 5、使用动态库进行链接,生成的 ELF 可执行文件的大小和链接的动态库
- 6、使 用 静 态 库 进 行 链 接 , 生成的 ELF 可执行文件的大小和链接的动态库
- 7、使用 readelf -S 查看其各个 section 的信息
- 8、使用 objdump -D 对其进行反汇编
编写一个简单的程序:
#include2、将源文件 test.c 文件预处理生成 test.iint main(void) { printf("Hello World!n"); return 0; }
gcc -E test.c -o test.i
gcc -S test.i -o test.s
将编译生成的 test.s 文件汇编生成目标文件 test.o5、使用动态库进行链接,生成的 ELF 可执行文件的大小和链接的动态库
gcc test.c -o test size test
ldd test
可以看出该可执行文件链接了很多其他动态库,主要是 Linux 的 glibc 动态库。
gcc -static test.c -o test size test
说明没有链接动态库。
readelf -S test8、使用 objdump -D 对其进行反汇编
objdump -D test



