直接下载使用sunfreeware的gcc33编译,如没有做额外的处理,编译程序会出如下关于signal.h解析错误:
# --
/usr/include/sys/siginfo.h:259: error: parse error before "ctid_t"
/usr/include/sys/siginfo.h:292: error: parse error before ''}'' token
/usr/include/sys/siginfo.h:292: error: ISO C forbids data definition
with no type or storage class
/usr/include/sys/siginfo.h:294: error: parse error before ''}'' token
/usr/include/sys/siginfo.h:294: error: ISO C forbids data definition
with no type or storage class
/usr/include/sys/siginfo.h:390: error: parse error before "ctid_t"
/usr/include/sys/siginfo.h:392: error: conflicting types for `__proc''
/usr/include/sys/siginfo.h:261: error: previous declaration of `__proc''
/usr/include/sys/siginfo.h:398: error: conflicting types for `__fault''
/usr/include/sys/siginfo.h:267: error: previous declaration of `__fault''
/usr/include/sys/siginfo.h:404: error: conflicting types for `__file''
/usr/include/sys/siginfo.h:273: error: previous declaration of `__file''
/usr/include/sys/siginfo.h:420: error: conflicting types for `__prof''
/usr/include/sys/siginfo.h:287: error: previous declaration of `__prof''
/usr/include/sys/siginfo.h:424: error: conflicting types for `__rctl''
/usr/include/sys/siginfo.h:291: error: previous declaration of `__rctl''
/usr/include/sys/siginfo.h:426: error: parse error before ''}'' token
/usr/include/sys/siginfo.h:426: error: ISO C forbids data definition
with no type or storage class
/usr/include/sys/siginfo.h:428: error: parse error before ''}'' token
/usr/include/sys/siginfo.h:428: error: ISO C forbids data definition
with no type or storage class
/usr/include/sys/siginfo.h:432: error: parse error before "k_siginfo_t"
/usr/include/sys/siginfo.h:437: error: parse error before ''}'' token
/usr/include/sys/siginfo.h:437: error: ISO C forbids data definition
with no type or storage class
In file included from /usr/include/signal.h:26,
这是因为sunfreeware发布的这个版本的gcc是针对比较早,为正式版的的Solaris10,需要更新一下头文件:
cd /usr/local/lib/gcc-lib/i386-pc-solaris2.10/3.3.2/install-tools/
在mkheaders.conf文件前加入SHELL=/bin/sh
并执行
./mkheaders
具体见http://www.sunfreeware.com/programlistintel10.html#gcc33
最好建议大家使用Sun官方的gcc,在/usr/sfw/bin/gcc,版本3.4.3
如果这个版本不行的话,还可以从http://www.sun.com/software/solaris/freeware/ 网页上有官方的Solaris Companion CD中选择。建议大家使用,毕竟Sun官方软件在性能上一定会有所优化。