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(
同样可以煎鸡蛋
)