C/C++编译过程分为了以下几部分
-
预处理:头文件展开 去注释 宏替换 条件编译
gcc -E hello.c -o hello.i
-
编译(生成汇编):将C代码翻译为汇编代码
gcc -S hello.i -o hello.s
-
汇编:生成机器识别的二进制代码
gcc -c hello.s -o hello.o
-
链接:生成可执行文件或库文件
gcc hello.o -o hello
文件库分为静态库和动态库。gcc默认是动态链接的。可以用file
命令来验证
Linux调试器-gdb
Linux默认生成的可执行程序是动态链接且以release方式发布
要使用gdb调试,gcc必须加-g
选项
查看是否有调试信息,通过readelf -S hello | grep debug
命令来查看
dbg命令: