Linux 版 (精华区)

发信人: netiscpu (说不如做), 信区: Unix
标  题: Gcc的安装与使用 (8)
发信站: 紫 丁 香 (Sat May 16 21:00:49 1998), 转信


发信人: jacky (绞肉机), 信区: linux
标  题: Gcc的安装与使用8
发信站: 饮水思源站 (Fri May 15 16:42:21 1998) , 站内信件



档内,把-I/usr/include/bsd加到CFLAGS那一行;把-lbsd加到LDFLAGS那一行).如果你真
的那麽想要BSD型态的信号行为(BSD type signal behavior),也不再需要加上
-D__USE_BSD_SIGNAL了.那是因为当你用了-I/usr/include/bsd与含括了标头档
<signal.h>之後,make就自动会把它加入了.

4.3.2. 失落的封印(`Missing' signals)(SIGBUS, SIGEMT, SIGIOT, SIGTRAP, SIGSYS etc) 

Linux与POSIX是完全相容的.不过,有些信号并不是POSIX定义的---ISO/IEC 9945-1:1990
(IEEE Std 1003.1-1990), paragraph B.3.3.1.1 sez:

     "在POSIX.1中省略了SIGBUS, SIGEMT, SIGIOT, SIGTRAP, 与SIGSYS信号,
     那是因为它们的行为(behavior)与实作方式是息息相关的(implementations
     dependent),而且也无法进行适当的分门别类(adequately categorized).确认实作
     方式後(conforming implementations),便可以生产出(deliver)这些信号,可以必须
     以文件说明(document)它们是在什麽样的环境(circumstances)下生产出来的,以
     及指出与它们的发展相关的任何限制(any restrictions concerning their delivery)". 

如欲修正此点,最简单,也是最笨的(cheesy)方法就是以SIGUNUSED重新定义这些信号.而正
确的方法应是以条件式的编译#ifdef来处理这些问题才对:

     #ifdef SIGSYS
     /* ... non-posix SIGSYS code here .... */
     #endif

11/15/97译

4.3.3. K & R 

gcc是个与ANSI相容的编译器;奇怪的是,目前大多数的程式码都不符合ANSI所定的标
准.如果你热爱ANSI,喜欢用ANSI提供的标准来撰写C程式,似乎除了在编译器的旗号上
加上-traditional之外,就没有什麽其它的可以多谈的了.There is a certain amount of
finer-grained control over which varieties of brain damage to emulate;请自行查阅gcc info page.

要注意的是,尽管你用了-traditional来改变语言,它的效果也仅局限在gcc所能够接受
的□围.例如, -traditional会打开(turn on)-fwritable-strings,使得字串常数(string
constants)移至资料记忆体空间(data space)内(从程式码记忆体空间(text space),这地方是不
能任意写入的).这样做会让程式码的记忆体空间无形中增加的.

4.3.4. 前置处理器(Preprocessor)的符号卯上函数原型宣告(prototypes) 

最常见的问题是,如众所皆知,Linux中有许多常用的函数都定义成巨集(macros)存放在标
头档(header files)内,此时若有相似的函数原型宣告出现在程式码内,前置处理器会拒绝进

--
m;33m※ 来源:·饮水思源站 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.225毫秒