raid_fifa
如何安装solaris10为64位模式
刚刚装好的solaris10 for x86_64,在intel Dual-Core Xeon平台上,怎么变成i386的了??
bash-3.00# uname -a
SunOS unknown 5.10 Generic_127128-11 i86pc i386 i86pc
怎么确认安装的是64位模式啊??
raid_fifa
thanks.
再问,怎么很多可执行的命令和库文件都是32位的啊?包括后装的一些从sunfreeware上下载的gnu软件包,例如:
bash-3.00# file /usr/local/lib/libstdc++.so.6
/usr/local/lib/libstdc++.so.6: ELF 32-bit LSB dynamic lib 80386 Version 1 [FPU], dynamically linked, not stripped, no debugging information available
bash-3.00# file /usr/local/lib/libgcc_s.so.1
/usr/local/lib/libgcc_s.so.1: ELF 32-bit LSB dynamic lib 80386 Version 1 [FPU], dynamically linked, not stripped
想从源码编译64位的mysql不成功,报错ld: fatal : library -lgcc_s_amd64: not found,libgcc_s.so只有32位的,怎么搞??
wuqing
1、Solaris10开始,彻底抛弃静态库
2、Solaris10安装程序是起的32位的内核,但是安装过程中会检测硬件平台的位数并最终安装成和硬件平台一致的操作系统(如果硬件是32位,安装以后就只能运行32位的应用程序,而64位的硬件系统安装以后是可以同时支持32位应用程序和64位的应用程序)
3、编译安装64位的应用记得链接64位的库,64位的库统统在sparcv9目录下,如[b]/lib/sparcv9, /usr/lib/sparcv9[/b]
4、如果是自己写的程序要编译成64位,则请在使用SunStudio编译时指定参数 -xarch=native64 / -xarch=amd64 或者 -xarch=V9
wuqing
wuqingping@x4100 /lib/64]$ls -l /lib/32 /lib/64
lrwxrwxrwx 1 root root 1 Mar 5 2007 /lib/32 -> .
lrwxrwxrwx 1 root root 5 Mar 5 2007 /lib/64 -> amd64
wuqingping@x4100 /lib/64]$hostname
x4100
wuqingping@x4100 /lib/64]$file /lib/64/lib
Display all 121 possibilities? (y or n)
wuqingping@x4100 /lib/64]$file /lib/64/liba
libadm.so libadm.so.1 libaio.so libaio.so.1 libavl.so.1
wuqingping@x4100 /lib/64]$file /lib/64/libadm.so
/lib/64/libadm.so: [b]ELF 64-bit[/b] LSB dynamic lib AMD64 Version 1, dynamically linked, not stripped, no debugging information available
wuqingping@x4100 /lib/64]$
这是在unix-center的X4100,一台体验机器,和你的机器属于一种架构,X86
wuqing
[quote]原帖由 [i]raid_fifa[/i] 于 2008-6-11 16:49 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8572112&ptid=1156476][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
/lib/64这个目录倒是有,但是没有编译需要的libgcc_s_amd64.so啊
我下载了libgcc,安装到了/usr/local/lib下面,都是32位的
去哪儿找64位的libgcc呢? [/quote]
我只顾着给你介绍基本的库结构了
其实我们在安装一个编译系统,无论是GCC还是Sunstudio,都会同时安装一套自己附带的库。
对于Solaris10来说,缺省已经安装了一套GNU套件,也就是说,系统安装完毕,不需要再安装其他任何编译环境,已经就可以编译大多数GNU的软件,但是对于少数对编译环境版本有严格要求的还是需要继续升级一些组件。这个缺省的GNU套件安装在/usr/sfw下。下载给你展示你要的这个库:
wuqingping@x4100 /usr/sfw/lib/64]$pwd
/usr/sfw/lib/64
wuqingping@x4100 /usr/sfw/lib/64]$ls -l libgcc*
-r-xr-xr-x 1 root bin 172408 Jan 23 2005 libgcc_s.so.1
lrwxrwxrwx 1 root root 13 Mar 5 2007 libgcc_s_amd64.so -> libgcc_s.so.1
wuqingping@x4100 /usr/sfw/lib/64]$file libgcc_s_amd64.so
libgcc_s_amd64.so: ELF 64-bit LSB dynamic lib AMD64 Version 1, dynamically linked, not stripped
wuqingping@x4100 /usr/sfw/lib/64]$../../bin/gcc -v
Reading specs from /usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/specs
Configured with: /builds/sfw10-gate/usr/src/cmd/gcc/gcc-3.4.3/configure --prefix=/usr/sfw --with-as=/usr/sfw/bin/gas --with-gnu-as --with-ld=/usr/ccs/bin/ld --without-gnu-ld --enable-languages=c,c++ --enable-shared
Thread model: posix
gcc version 3.4.3 (csl-sol210-3_4-branch+sol_rpath)
wuqingping@x4100 /usr/sfw/lib/64]$
对于你来说,解决方案是:
1、gcc编译时选择64位的相应的选项
2、如果编译过程中报库错误,连接错误的话,检查并确保/usr/sfw/lib包含在[b]LD_LIBRARY_PATH[/b]环境变量中
3、如果gcc版本3.4.3无法满足你的要求,那么只能从[url]www.sunfreeware.com[/url]下载gcc高版本源代码,用gcc低版本以源代码方式安装新版本,注意要下载对应的libiconv。
如果还有问题,时间又紧急的话,那么把你的windows的netmeeting打开,远程连接以后,你看着屏幕一起解决这种类型的问题,协同工作。
raid_fifa
回复 #10 wuqing 的帖子
非常感谢如此详细的回帖。
你提到的123点都没有问题,但是奇怪的是在我的系统里面没有libgcc_s_amd64这个链接:
bash-3.00# pwd
/usr/sfw/lib/64
bash-3.00# ls
libXdamage.so libcrypto.so.0.9.7 libfl.so
libXdamage.so.1 libcrypto_extra.so.0.9.7 libssl.so
libXfixes.so libexpat.so libssl.so.0.9.7
libXfixes.so.1 libexpat.so.0 libssl_extra.so.0.9.7
libXrender.so libexpat.so.1 llib-lcrypto.ln
libXrender.so.1 libexpat.so.1.5.2 llib-lssl.ln
libcrypto.so libfl-2.5.4.so.0
bash-3.00# find / -name libgcc*
/export/home/libgcc-3.4.6-sol10-x86-local
/usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/amd64/libgcc.a
/usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/amd64/libgcc_eh.a
/usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/libgcc.a
/usr/sfw/lib/gcc/i386-pc-solaris2.10/3.4.3/libgcc_eh.a
/usr/local/lib/libgcc_s.so
/usr/local/lib/libgcc_s.so.1
能否帮我确认一下/usr/sfw/lib/64目录下的这个libgcc_s_amd64.so -> libgcc_s.so.1是哪个package里面包含的?我总觉得我的系统里面好像少安装了什么包。
谢谢!