Linux 版 (精华区)
发信人: netiscpu (说不如做), 信区: Unix
标 题: Gcc的安装与使用 (5)
发信站: 紫 丁 香 (Sat May 16 20:59:11 1998), 转信
发信人: jacky (绞肉机), 信区: linux
标 题: Gcc的安装与使用5
发信站: 饮水思源站 (Fri May 15 16:42:14 1998) , 站内信件
那些无法移植的程式码(non-portable bits),以条件式编译(conditional compilation)
的前置命令封括(enclose in)起来,可是个不错的主意呢!
#ifdef __linux__
/* ... funky stuff ... */
#endif /* linux */
用__linux__即可达成目的;看仔细一点,不是linux啊.仅管後者也有定义,毕竟,仍然不是
POSIX的标准(not POSIX compliant).
4.2. 线上求助说明(invocation)
gcc编译器参数(switches)的说明文件是gcc info page(在Emacs内,按下C-h i,然後选
'gcc'的选项).要是弄不出来,不是卖你CD-ROM的人,没把这个东东压给你,不然就是你现
在用的是旧版的.这种情况下,最好的方法是移动尊臀到archive
ftp://prep.ai.mit.edu/pub/gnu或是它的mirrors站台上,把gcc的原始档案抓回家,重新
烹饪一番.
gcc manual page (gcc.1) 可以说是已经过时了.一旦你吃饱撑著没事干要去看看它的话,
它就会告诉你这件事,叫你别无聊了.
4.2.1. 旗正飘飘~(flags)
在命令列(command line)上执行gcc时,只要在它的屁股後面加上-On的选项,就能让gcc乖
乖的替你生出最佳化後的机器码(output code).这里的n是一个可有可无的小整数.不同的
gcc版本,n的意义与其正确的(exact)功效都不一样;不过,典型的□围是从0(不要鸡婆,我
不要最佳化)变化到2(最佳化要多一点),再到3(最佳化要再多一点,多一点).
gcc在其内部会将这些转译成一系列的-f 与-m选项(options).执行gcc时带上旗号(flags)
-v与-Q,你就能很清楚的看出每一种等级的-O是对应(maps)到那些选项(options).例如,就
-O2来讲,我的gcc告诉我说:
enabled: -fdefer-pop -fcse-follow-jumps -fcse-skip-blocks
-fexpensive-optimizations
-fthread-jumps -fpeephole -fforce-mem -ffunction-cse -finline
-fcaller-saves -fpcc-struct-return -frerun-cse-after-loop
-fcommon -fgnu-linker -m80387 -mhard-float -mno-soft-float
-mno-386 -m486 -mieee-fp -mfp-ret-in-387
要是你用的最佳化等级(optimization level)高於你的编译器所能支援的(e.g. -O6),那
麽它的效果,就跟你用你的编译器所能提供的最高等级的,是一样的结果.说实在的,发行出
去的gcc程式码,用在编译时竟是如此处理这等问题,实非什麽好的构想.日後若是有更进步
的最佳化方法具体整合到新的版本里,而你(或你的users)还是试著这样做的话,可能就会
发现,gcc会中断你的程式(break your code)了.
--
m;32m※ 来源:·饮水思源站 bbs.sjtu.edu.cn·[FROM: 202.112.26.100]m
--
Enjoy Linux!
-----It's FREE!-----
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.084毫秒