- 论坛徽章:
- 0
|
(1):首先,确保gcc安装正确,我也装过,给你贴出来:
(1):操作系统
Solaris9
#uname -a
SunOS XADOMAIN 5.9 Generic_118559-11 i86pc i386 i86pc
(2)gcc和lib库
使用
gcc-3.4.1-sol9-intel-local.gz
和 libiconv-1.8-sol9-intel-local.gz,其实gcc-3.4.0-sol9-intel-local.gz
或者gcc-3.4.0-sol9-intel-local.gz因该也可以的,您可以试试。
automake系统已经安装了,所以我只安装了make-3.80-sol9-intel-local.gz
(3)安装过程
可以用ssh以root的身份(这样有权限修改文件)登陆Solaris系统,如果root不能登陆的话可以
#cd /etc/ssh
#vi sshd_config.conf
修改PermitRootLogin no 为 PermitRootLogin yes
然后
#cd /etc/init.d
# ./ssh restart
或者直接reboot就可以root登陆了
登陆后,将三个.gz文件拖入到/目录下
然后
# gzip -d gcc-3.4.1-sol9-intel-local.gz
# pkgadd -d gcc-3.4.1-sol9-intel-local
# gzip -d libiconv-1.8-sol9-intel-local.gz
# pkgadd -d libiconv-1.8-sol9-intel-local
# gzip -d make-3.80-sol9-intel-local.gz
# pkgadd -d make-3.80-sol9-intel-local
如果您没有安装automake的话,可以如此方法安装一个automake-1.7.2-sol9-intel-local.gz
(4)配置
PATH=$PATH:/usr/local/bin
LD_LIBRARY_PATH=/usr/local/lib
MANPATH=$MANPATH:/usr/local/man
CC=gcc
export PATH
export LD_LIBRARY_PATH
export CC
export MANPATH
或者直接将这些加入到/etc/profile里面,reboot就可以了,这样就不需要每次重启后都得设一遍
(5)注意,安装gcc的时候一定要注意看提示,我前面没成功就是因为gcc安装空间不够,要装gcc最起码得留800兆
在/usr下留800兆吧,我留了1G多
(2)top安装的问题,起初我用源代码安装,make时报错了,在网上搜到了解决方案,不知道对你是否有用:
对于这样的错误:
bash-2.05# make
gcc -c ssl.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c sysutil.c -O2 -Wall -W -Wshadow -idirafter dummyinc
In file included from /usr/include/sys/reg.h:13,
from /usr/include/sys/regset.h:24,
from /usr/include/sys/ucontext.h:21,
from /usr/local/lib/gcc/i386-pc-solaris2.9/3.4.2/include/sys/signal.h:249,
from /usr/include/signal.h:27,
from sysutil.c:28:
/usr/include/ia32/sys/reg.h:300: error: parse error before "upad128_t"
/usr/include/ia32/sys/reg.h:302: error: parse error before '}' token
/usr/include/ia32/sys/reg.h:309: error: field `kfpu_fx' has incomplete type
/usr/include/ia32/sys/reg.h:331: error: parse error before "upad128_t"
/usr/include/ia32/sys/reg.h:338: error: parse error before '}' token
/usr/include/ia32/sys/reg.h:339: error: parse error before '}' token
/usr/include/ia32/sys/reg.h:376: error: parse error before "fpregset_t"
In file included from /usr/local/lib/gcc/i386-pc-solaris2.9/3.4.2/include/sys/signal.h:249,
from /usr/include/signal.h:27,
from sysutil.c:28:
/usr/include/sys/ucontext.h:69: error: parse error before "mcontext_t"
/usr/include/sys/ucontext.h:71: error: parse error before '}' token
make: *** [sysutil.o] Error 1
可以这么作:
从错误报告来看和上两次的不同,上面的都只是文件找不到这样简单的故障,这个不一样了,头文件的问题,这可难办了,谁知到他们怎么定义的头文件呀,本人也不是程序员出身,头疼!!!,不过偶没有放弃,先打开了提示的头文件reg.h,看了看13行,知道了reg.h又调用了/usr/include/ia32/sys/reg.h,(ia32?这个估计是关于cpu架构的吧,32位/64位),其他的都看不懂了,然后先登录cu,搜索一下sysutil.o,没有解决办法,接着又搜索了reg.h,没想到找到解决办法了,参见http://bbs.chinaunix.net/forum/viewtopic.php?t=416642([准原创]sol9_x86+apache+mysql+php+discuz [精华])
里面给出了解决办法:
请修改/usr/include/ia32/sys/reg.h
在第245行
写入
typedef union {
long _q;
uint32_t _l[4];
} upad128_t;
偶照抄过去,修改后,再编译仍然通不过。
仔细看错误提示,感觉就是变量声明又问题,后来看/usr/include/ia32/sys/reg.h 中又调用了/usr/include/sys/types.h,从types.h中找到了如下一段代码:
typedef union{
long double _q;
uint32_t _l[4];
} upad128_t;
将这段代码拷贝到 /usr/include/ia32/sys/reg.h 第245行,再次make,通过!!!
过后想了想,第一次make没过,可能是我输入union定义时输错了,没有看到long与_q ,uint32_t和_l[4]之间的空格,所以才失败的。
http://www.chinaunix.net/jh/15/578775.html
希望对你有用! |
|