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