之前有人写过在Ubuntu10.04下手动安装gcc4.5.0,但是我按照其方法做的过程当中出现了些问题。
该文章讲到在出现error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory时,通过添加环境变量export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-5.0.1/lib:/usr/local/mpfr-2.4.2/lib来改正这个错误。但是在12.04中这么做却没有成功。不知到是不是12.04中没有LD_LIBRARY_PATH的原因。通过在网上搜索,找到了解决办法:http://blog.csdn.net/qiek/article/details/537636。其内容为:
"
然后如果发现了libXXX.so.1.2.3的确存在,就把libXXX.so.1.2.3所在的目录加入到 /etc/ld.so.conf 中,或者在 /etc/ld.so.conf.d/ 下新建一文件,如 XXX.conf ,其内容是libXXX.so.1.2.3所在的目录。
如果发现libXXX.so.1.2.3不存在,你可能没安装包含库的程序。一般google一下“XXX linux”就能找到相应的软件。
如果提示是error while loading shared libraries: libXXX.so,但你的系统上有libXXX.so.5,你可以为libXXX.so.5
做一个软链接 ln -s libXXX.so.5 libXXX.so
如,我执行一个ACE开发包中的样例程序时,出现以下提示:
./logging_app: error while loading shared libraries: libACE.so.5.4.7: cannot open shared object file: No such file or directory
[root@lf ld.so.conf.d]# locate libACE.so.5.4.7
/opt/ace/ace/libACE.so.5.4.7
/opt/ace/lib/libACE.so.5.4.7
[root@lf ld.so.conf.d]# vi ace.conf
ace.conf中只有一行: /opt/ace/lib
然后再执行 ldconfig
我的具体做法是在/etc$ cd ld.so.conf.d/目录下建立两个文件分别命名为:gmp.conf 和mpfr.conf 其中的内容分别是gmp和mpfr的库目录(至于建立了文件还要不要添加变量,我就不清楚了,因为我建立这两个个文件之后,那个变量已经添加好了,我也没有再改),如我的gmp安装在了/usr/local/gmp-4.3.2中,gmp.conf中的内容就是/usr/local/gmp-4.3.2/lib,我的mpfr安装在了/usr/local/mpfr-2.4.2,则mpfr.conf的内容就是/usr/local/mpfr-2.4.2/lib。建立完这两个文件之后,记得执行ldconfig。这样就可以解决这个问题了,不过后面还遇到了些问题,具体的也不记得了,就是提示找不到XXX.h,然后我就用locate命令看下这个头文件在哪:locate XXX.h然后把这个头文件复制到系统默认的include目录下(ubuntu12.04好像也没有include环境变量,我的默认目录时),后来我发现其缺少的头文件都在/usr/include/x86_64-linux-gnu/中于是我就吧x86_64-linux-gnu/下的所有头文件拷贝到/usr/include。这样就不会因为找不到头文件而报错了。但是后来又找不到库文件xxx(后缀名也不记得了),然后查看该文件的位置:locate xxx。然后把包含该文件的目录中的所有文件都拷贝到了系统你默认的库路径中(我的默认路径时/usr/include/lib),然后再编译就成功了。
写这篇文章的时候,我还是一只菜鸟,可能解决问题的方法有些笨拙,但是折腾了那么久,也终于可以解决了。如果有人有更好的办法的话,还望不吝赐教。