GCC & G++

【Warning 选项】

详细查阅GCC手册:http://gcc.gnu.org/onlinedocs/gcc-4.6.0/gcc/Warning-Options.html#Warning-Options

 

-Wall
显示关键类别的警告信息。

 

-Wextra
显示额外的警告信息,没有包含在-Wall中的;该选项原来被称为-W,目前仍然有效,但建议使用新名称。

 

-Werror
将警告视为错误处理,即在警告发生时终止编译。

 


【宏处理】
查看gcc预定义的宏,这些宏名称都是以'__'为前缀的
$ cpp -dM /dev/null
#define __i386__ 1
#define __i386 1
#define i386 1
#define __unix 1
#define __unix__ 1
#define __ELF__ 1
#define unix 1
.......

 

注意:个别名称不是'__'前缀的宏是 system-specific macros。

 


【程序调试】
设置允许的core文件大小为“无穷大”
$ ulimit -c unlimited

 


【优化选项】
-O0 或无优化选项
GCC不对代码进行任何优化,逐行编译程序码,适合用来debug程序。

 

-O1

提供基础的简单优化功能。

 

-O2
提供最大程度的优化同时不会增加程序的大小,是部署程序的最佳选择

 

-O3
在-O1,-O2的基础上提供function inlining等优化,能加快程序的执行速度,但同时也会显著增加程序的大小;有时也会导致程序变慢。


【相关工具】
ar 创建静态库
$ ar cr libhello.a hello_fn.o bye_fn.o

 

查看静态库中的object文件
$ ar t libhello.a
hello_fn.o
bye_fn.o


nm 查看程序的符号表
$ nm a.out
08048334 t Letext
08049498 ? _DYNAMIC
08049570 ? _GLOBAL_OFFSET_TABLE_
........

 

 

参考书:《An Introduction to GCC for the GNU Compilers gcc and g++》

 

 

 

posted @ 2011-07-27 10:27  edwardlost  阅读(478)  评论(0编辑  收藏  举报