-Wall 打开所有常用的编译警告,其中包括
(建议总是使用)
-Wcomment 对嵌套的注释发出警告;
-Wformat 警告象printf和scanf这种函数中格式化字符串的误用,即格式化字符串与对应的函数参数的类型不一致;
-Wunused 警告有没有使用到的变量;
-Wimplicit 对任何没有声明就使用的函数发出警告;
-Wreturn-type 警告定义的函数没有返回类型但并没有声明返回void
-o 指定输出文件文件名,否则为a.out
-c 把指定源文件编译为对象文件,即.o文件
-S 将指定源文件编译为汇编程序,输出后缀为.s的汇编文件
-g 在对象文件(Object file)和可执行文件中存储另外的调试信息,可以使用gdb等调试工具对可执行文件进行调试跟踪;另外,配合core文件可以找到程序奔溃的环境。
-D 编译时设置宏定义,有两种形式:-D NAME 相当于#define NAME;-D NAME=DEFINITION 相当于 #define NAME DEFINITION
设置搜索路径
-----------------
默认情况下,GCC编译时在
/usr/local/include和
/usr/include这两个路径搜索头文件;链接时,在/usr/local/lib/和/usr/lib/这两个目录下搜索库文件,如果库被安装在其他目录,如何使GCC去指定目录搜索呢,这就需要用到-L和-I选项:-L指定库文件的路径,-I指定头文件的路径。
为了避免手动输入搜索路径,可以
将搜索路径添加至.bash_profile文件中,类似以下的格式:
-
export C_INCLUDE_PATH=/usr/local/pgsql/include:/net/include:$C_INCLUDE_PATH
-
export LIBRARY_PATH=/usr/local/pgsql/lib:/net/lib:$LIBRARY_PATH
最终生成的可执行文件可能需要调用共享库,因此直接运行可能会提示无法打开共享对象文件(cannot open shared object file: No such file or directory),此时我们需要在环境变量LD_LIBRARY_PATH中添加其所需共享库的路径。
如果我们使用
-static选项迫使gcc使用静态链接,此时会创建一个与静态库(.a文件)链接的可执行文件,运行时无需设置
LD_LIBRARY_PATH。
参考文献
-----------
1. http://blog.chinaunix.net/uid-20355083-id-1963948.html
2.
3. http://blog.csdn.net/maopig/article/details/7230311
阅读(1163) | 评论(0) | 转发(0) |