标签(空格分隔): linux posix api
gcc编译相关选项:
-
gcc -E hello.c > hello.Sss
预处理hello.c,生成预处理后文件hello.i,即是后续的编译、汇编、链接操作不做。
-
gcc -S hello.c > hello.s
编译产生汇编文件。
-
gcc -c hello.c > hello.o
生成目标文件。
-
gcc -v -g hello.c > hello
查看完整和详细的gcc编译过程。查看gcc在背后所做的具体事情。
二进制文件分段(readelf查看格式):
-
text段为代码段,用于保存可执行指令。
-
data用于保存有非0初始值的全局变量和静态变量。
-
bss段用于保存没有初始值或初始值为0的全局变量和静态变量。
这个段并不占用空间--因为完全没有必要。
-
debug段:保存调试信息。
加-g选项则生成信息,否则不生成。
stip
去掉符号信息。 -
dymamic段:用于保存动态链接信息。
-
fini段:用于保存进程退出时执行程序。当进程结束时,系统会自动执行这部分代码。
-
init段:用于保存进程启动时的执行程序。当进程启动时,系统会自动执行这部分代码。
-
rodata段:用于保存只读数据,如const修饰的全局变量、字符串常量。
-
symtab段:用于保存符号表。
网友评论