操作系统原始环境如下:
美元uname -a
5.10 SunOS sol10u6 Generic_137138-09 i86pc i386 i86pc $/usr/sfw/bin/gcc - v
阅读规格从/usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/规格
配置:/构建/sfw10-gate/usr/src/cmd/gcc/gcc-3.4.3/configure——prefix=/usr/sfw——以=/usr/sfw/bin/气体——with-gnu-as with-ld ccs/=/usr/bin/ld - without-gnu-ld enable-languages=c, c++,启用共享
线程模型:posix
的gcc版本3.4.3 (csl-sol210-3_4-branch + sol_rpath)
/usr/ccs/bin/ld美元- v
ld:软件生成实用工具——Solaris链接编辑:5.10 - -1.490
gmake美元——
GNU版本版权让
3.80 (c) 2002年,自由软件基金会,Inc .
这是自由软件;看到复制的源条件。
没有保证;甚至不适销性或适合
特定目的。
/usr/sfw/bin/gld美元——GNU ld版本
2.15版本版权2002自由软件基金会,Inc .
这个程序是自由软件;你可以重新分配根据
GNU通用公共许可证。这个项目完全没有保修。
Solaris 10 x86自带的gcc版本为3,4.3,指定链接器为/usr/ccs/bin/ld,但是在少对应gcc编译器的配置文件构建/config/SunOS-GCC中,指定的链接器参数是GNU ld格式的,编译时会报出许多跟链接器有关的警告及错误,所以,必须强制gcc使用GNU ld。我不知道gcc是不是可以通过命令行参数来指定所使用的链接器,我是通过重命名系统自带ccs/的/usr/bin/ld文件,然后ccs/在/usr/bin/下建立一个符号连接,指向GNU ld来达到这一目的的。
系统自带的GNU ld版本为2.15,此版本的GNU ld有一个错误,在Solaris 10中,将许多在Solaris 9中原本处于.bbs段的符号移到了。abs段,而GNU ld不会处理。abs中导出的符号,导致在链接时报许多符号找不到的错误。在GNU binutils 2006年的错误邮件列表里详细讨论了此问题及解决方法。我不太确定GNU ld具体是在哪一个版本里修正了此错误,我下载的2.21.1版本的binutil二进制包中已经修正了此bug.binutils依赖于以下的包:libiconv, libintl, zlib, libgcc-3.4.6或者c-3.4.6。必须安装这些包才能顺利编译少,各个包安装的先后次序没有要求。安装完各个包之后,先将系统自带ccs/的/usr/bin/ld重命名,然后ln - s/usr/local/bin/ld, ld建议一个符号连接。
www.sourceware.org/bugzilla/show_bug.cgi?id=1021
通过命令pkgadd - d文件名安装以下包:
binutils-2.21.1a-sol10-x86-local gcc-3.4.6-sol10-x86-local
libiconv - 1.14 - sol10 - x86 -当地
libintl-3.4.0-sol10-x86-local zlib-1.2.7-sol10-x86-local
安装完成后环境如下:
美元,gcc
/usr/地方/bin/gcc $/usr/local/bin/gcc - v
阅读规格从/usr/local/lib/gcc/i386-pc-solaris2.10/3.4.6/规格
配置:. .ccs//配置——以=/usr/bin/獁ith-ld=/usr/ccs/bin/ld -启用共享enable-languages=c, c++, f77
线程模型:posix gcc 3.4.6版
$ ls - l/usr/ccs/bin/ld,
lrwxrwxrwx,1根,,根,,,,,17日1月25日11:15/usr/ccs/bin/ld→/usr/local/bin/ld
/usr/local/bin/ld美元——版本
GNU ld (GNU Binutils) 2.21.1
2011年版权自由软件基金会,Inc .
这个程序是自由软件;你可以重新分配根据
GNU通用公共授权版本3或(任您选)以后的版本。
这个节目完全没有保修。
1。编辑构建/config/SunOS-GCC文件,找到以下行:
# #系统特定库
# SYSLIBS,=-lpthread ldl轻轨车
修改为:
# #系统特定库
# SYSLIBS,=扒峁?lsocket -lnls
libc S10 libpthread是空滤,这是奇特的方式,所有的代码在libthread搬到libc libpthread只是一个壳说,老项目与libpthread仍然可以运行。
gld是窒息在Solaris库过滤器只
http://www.mentby.com/group/sqlite users/build -问题- sqlite - 36142 -与- gcc - Solaris 10 - 440. - html
2。编辑建立/规定/全球文件,找到以下行:
# #构建包括目录列表
号包括=$(美元foreach p (POCO_ADD_INCLUDE),我(p)美元)-Iinclude美元(美元foreach p(组件),我(POCO_BASE)/美元(p)/$ (INCDIR))
# #构建图书馆目录列表
#库=$(美元foreach p (POCO_ADD_LIBRARY) - l (p)美元)- l (LIBPATH:)美元(POCO_LIBRARY)
修改为:
# #构建包括目录列表
号包括=$(美元foreach p (POCO_ADD_INCLUDE),我(p)美元)-Iinclude - I/usr/sfw/包括-
I/usr/sfw/Include/mysql美元(美元foreach p(组件),我(POCO_BASE)/美元(p)/$ (INCDIR))
# #构建图书馆目录列表
#库=$(美元foreach p (POCO_ADD_LIBRARY) - l (p)美元)- l/usr/sfw/lib - l (LIBPATH)美元(