GCC的参数优化与环境变量

gcc比较重要的编译选项:
-w 禁止输出警告消息
-Wall 显示所有的警告消息
-ansi 按照 ANSI 标准编译程序,但并不限制与标准并不冲突的 GNU 扩展 ( 一般不用该选项 )
-std=<name> 指定 C 语言的标准 (c89,c99,gnu89) ,该选项禁止了 GNU C 的扩展关键字 asm,typeof,inline ( 一般不用该选项 )
-static 连接器将忽略动态连接库,同时通过将静态目标文件直接包含到结果目标文件完成对所有引用的解析。
-static 连接器将忽略动态连接库,同时通过将静态目标文件直接包含到结果目标文件完成对所有引用的解析。
-pipe 使用管道而不是临时文件一个阶段到另一个阶段交换输出的方式,可以加快编译速度。建议使用。
-I<dir> 指定搜索系统头文件的目录,可以重复使用多个该选项指定多个目录。
 
gcc使用的环境变量
CFLAGS CXXFLAGS ( 其实是 Autoconf 的环境变量 )
LIBRARY_PATH 连接程序将在这些目录中寻找特殊的连接程序文件。
LD_LIBRARY_PATH 该环境变量不影响编译程序,但是程序运行的时候会有影响:程序会查找该目录列表以寻找共享库。当不能够在编译程序的目录中找到共享库的时候,执行程序必须设置该环境变量。
LD_RUN_PATH 该环境变量不影响编译程序,但是程序运行的时候会有影响:它在运行时指出了文件的名字,运行的程序可以由此得到它的符号名字和地址。
GCC_EXEC_PREFIX 编译程序执行所有子程序的名字的前缀,默认值是 "<prefix>/lib/gcc-lib/"
其中的 <prefix> 是安装时 configure 脚本指定的前缀。
LANG 指定编译程序使用的字符集,可用于创建宽字符文件、串文字、注释;默认为英文。 [ 目前只支持日文 "C-JIS,C-SJIS,C-EUCJP" ,不支持中文 ]
LC_ALL 指定多字节字符的字符分类,主要用于确定字符串的字符边界以及编译程序使用何种语言发出诊断消息;默认设置与 LANG 相同。中文相关的几项: "zh_CN.GB2312 , zh_CN.GB18030 , zh_CN.GBK , zh_CN.UTF-8 , zh_TW.BIG5"
示例:QT宏Debug与Release差异
debug:
CXXFLAGS =-pipe -Wall -W -g -DQT_SHARED -DQT_NO_DEBUG -DQT_THREAD_SUPPORT
release:
CXXFLAGS = -pipe -Wall -W -O2 -g -pipe -m32 -march=i386 -mtune=pentium4 -DQT_NO_DEBUG -
DQT_SHARED -DQT_THREAD_SUPPORT
优化参数:02, m32 march=i386 mtune=pentium4 
 
     -O 优化级别,,-O0表示没有优化,-O1为缺省值,-O3优化级别最高,-02是 最安全的优化参数 ( 集合 ) ;桌面可以使用 "-03"
     -m32
     -m64 Generate code for a 32-bit or 64-bit environment. The 32-bit environment sets int, long and pointer to 32 bits. The64-bit environment sets int to 32 bits and long and pointer to 64 bits.
     march=i386             根据系统架构进行优化
     mtune=pentium4  表示为特定的 cpu 类型编译二进制代码 ,
Intel 通常是: pentium2, pentium3, pentium3m, pentium4, pentium4m, pentium-m, prescott, nocona; AMD 通常是: k6, k6-2, k6-3, athlon, athlon-tbird, athlon-xp, athlon-mp, opteron, athlon64, athlon-fx
说明: pentium3m/pentium4m 是笔记本用的移动 P3/P4 pentium-m 是迅驰 I/II 代笔记本的 cpu prescott 是带 SSE3 P4( 以滚烫到可以煎鸡蛋而闻名 ) nocona 则是最新的带有 EMT64(64 ) P4( 同样可以煎鸡蛋 )
 

你可能感兴趣的:(GCC的参数优化与环境变量)