介绍:下载康奈尔大学的一个开源系统,准备部署在fedora 15上。可是程序包和库文件不完整,安装说明写的也难以理解。
1、安装缺失的包
按照说明进行configure和make的时候,就提示找不到库文件。这些库文件可以通过安装软件包获得,然后放到相应的目录下。利用yum install(yum remove ,yum list installed)可以直接安装所需软件包,而且能轻易的解决包依赖问题;或者可以使用rpm -ivh(rpm -e )安装下载的软件包。
2.下载源码自己编译缺失的包
然而,使用yum只能安装最新版本的软件包,对于安装较低版本的软件似乎无能为力。有的时候即使rpm安装也不行,因为安装的是人家 编译好的二进制文件,很可能是由较高版本的编译器gcc编译的;而你要修改和编译的开源系统很可能适用较低版本的编译器,这样在重新编译开源系统的时候就 会出现问题。所以,这种情况最好下载所需软件包的源代码,使用你所需的编译器自己编译出所需的库文件,这次需要libxerces-c.so.27就遇到 了这个问题。
3. gcc降级
这次安装编译这个开源系统,首先就遇到了一个gcc降级的问题,要使用gcc3.3而fedora 15上是gcc4。于是下载并编译gcc3.3,然而编译gcc3.3又需要gcc4 ? 反正是编译不成功,好像存在一个gcc4 compat兼容包,安装这个以后,终于编译好了gcc3.3,然后在/usr/bin里让gcc链接gcc 3.3而不是gcc4。这样gcc才算好了。
过程中,还遇到一个降级的问题,make的时候报
“libstdc++.so.6: undefined reference to `_Unwind_GetIPInfo@GCC_4.2.0'”
这应该也是链接的库版本太高的问题;但makefile好像又必须要so.6这个名字的文件,无奈之下,还是用软连接——将libstdc++.so.6链接到libstdc++.so.5,也就是实际上还是用gcc3.3编译出来的库。
libstdc++.so.5 -> libstdc++.so.6
gcc -> /opt/gcc33/bin/gcc
软连接命令 ln -s 目标文件 连接文件。