欢迎来到天天文库
浏览记录
ID:20465881
大小:67.00 KB
页数:5页
时间:2018-10-09
《gcc编译选项分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、3.4.2Gcc编译选项分析Gcc有超过100个的可用选项,主要包拈总体选项、告警和出错选项、优化选项和体系结构相关选项。以下对每一类中最常用的选项进行讲解。(1)总体选项Gcc的总结选项如表3.7所示,很多在前面的示例中已经宥所涉及。表3.7Gcc总体选项列表后缀名所对应的语言-c只是编译不链接,生成
2、1
3、标文件“.0”-s只是编译不汇编,生成汇编代码-E只进行预编译,不做其他处理-g在可执行程序中毡含标准调试信息-ofile把输出文件输出到file里-V打印出编译器内部编译各过程的命令行倍息和编译器的版木-Idir
4、在头文件的搜索路径列表屮添加dirH录-Ldir在库文件的搜索路径列表中添加dirM录•static链接静态库-llibrary连接名为library的库文件对于“-c”、“-E”、、“-S”选项在前一小节中已经讲解了其使用方法,在此主要讲解另外两个非常常用的库依赖选项“-Idir”和“-Ldir”。•“-Tdir”正如上表中所述,“-Idir”选项可以在头文件的搜索路径列表中添加dir0录。由于1」^似中头文件都默认放到了“/usr/include/”目录下,因此,当用户希望添加放置在其他位置的头文件吋,就可以通过“
5、-Idir”选项来指定,这样,Gcc就会到相应的位置齊找对应的目录。比如在“/root/workplace/Gcc”下有W个文件:/*hello1.c*/#includeintmain()printf(“Hello!!”);return0;#include这样,就可在Gcc命令行中加入“-I”选项:[root@localhostGcc]Gcchello!.c-I/root/workplace/Gcc/-ohellol这样,Gcc就能够执行出正确结果。4>小知识在include语句中,"
6、<>"表示在标准路径中搜索头文件,表示在本目录中搜索。故在上例中,可把hellol.c的"#include〃改为"include“my.h”",就不需要加上"-1〃选项了。•“-Ldir”选项“-Ldir”的功能与“-Idir”类似,能够在库文件的搜索路径列表屮添加dir目录。例如有程序hello_sq.c需要用到目录“/root/workplace/Gcc/lib”下的一个动态座libsunq.so,则只需键入如下命令即可:[root@localhostGcc]Gcchello_sq.c-L/root/w
7、orkplace/Gcc/lib-Isunq-ohello_sq需要注意的是,“-Idir”和“-Ldir”都只是指定了路径,而没有指定文件,因此不能在路径中乜含文件名。另外值得讳细解释一下的是“-1”选项,它指示Gcc去连接痒文件libsunq.so。由于在Linux下的库文件命名时有一个规定:必须以lib三个字母开头。因此在用-1选项指定链接的库文件名时可以省去lib三个字母。也就是说Gcc在对”-Isunq”进行处理时,会自动去链接名为libsunq.so的文件。(1)告警和出错选项Gcc的告警和出错选项如表3.
8、8所示。表3.8Gcc总体选项列表选项含义-ansi支持符合ANSI标准的C程序-pedantic允许发出ANSIC标准所列的全部赘吿信息选项含义-pedantic-error允许发出ANSIC标准所列的全部错误信息-w关闭所有告钤-Wall允许发出Gcc提供的所有有用的报警信息-werror把所有的告膂信息转化为错误信息,并在告膂发生时终止编译过程下面结合实例对这儿个告警和出错选项进行简单的讲解。如有以下程序段:#includevoidmain(){longlongtmp=1;printf(“Thi
9、sisabadcode!”);return0;}这是一个很糟糕的程序,读者可以考虑一下有哪些问题?•‘‘-ansi”该选项强制Gcc生成标准语法所要求的告警信息,尽管这还并不能保证所有没有警告的程序都是符合ANSIC标准的。运行结果如下所示:[root@localhostGcc]#Gcc-ansiwarning.c—owarningwarning.c:在函数"main"中:warning.c:7警告:在无返回值的函数中,"return"带返回值warning.c:4警告:"main"的返回类型不是"int"可以看出
10、,该选项并没有发现”longlong”这个无效数据类型的错误。•“-pedantic”允许发出ANSIC标准所列的全部警告信息,同样也保证所有没有警告的程序都是符合ANSIC标准的。其•运行结果如下所示:[root@localhostGcc]#Gcc-pedanticwarning.c—owarningwarning.c:在函数"
此文档下载收益归作者所有