C程序从源代码到可执行文件的全过程(GNU GCC-编译驱动器) 分别是预处理(CPP展开头文件内容以及宏定义的替换)、编译(CC 将预处理后的源代码转换成汇编代码)、汇编(as 将汇编代码转换成机器码)、链接(ld 将一个或多个目标程序生成可执行文件)(如果是PROC 程序 还要多一部pc类型文件转换为C文件 pc独有的关键字替换成ODBC的API调用形式)
GCC的参数:
-UTEST 预处理未定义参数TEST 下面的TEST不生效
-DTEST 下面定义的参数生效
默认不输是什么情况 大伙可以试试
eg:
#ifdef TEST
***
#endif
-std
使用标准C还是GNU C
-ansi、-std=c90
-ansi/-pedantic
拒绝扩展新特性
相关工具:
hexdump :hexdump -c 查看C文件对应的16进制
objdump:objdump -d 可以查看反汇编的代码,可以查看目标文件和可执行文件
ldd: 查看可执行文件应用了哪些动态库
静态库:类似tar ,ar rcs lib*.a a.o b.o ;ar -t可以查看包含哪些目标文件
动态库:gcc -shared -fPIC -o lib*so a.c b.c
头文件:头文件搜索路径 对#include《**。h》 先在/usr/local/include 再在 /usr/include 搜索 对#include"" 默认在当前路径搜索 再在默认路径搜索