mpfr
为了在我的 Ubuntu 12.04.1 系统(64 位)上正确编译库,我需要更新C_INCLUDE_PATH
、LIBRARY_PATH
和LD_LIBRARY_PATH
变量LD_RUN_PATH
。这在常问问题用于构建mpfr
库。需要更新这些变量,因为gmp
库已在搜索路径中,并作为默认 Ubuntu 安装的一部分包含在内。但是,我已将gmp
库安装在我的/usr/local/lib
目录中。
在我的主目录中,我创建了一个.pam_environment
文件并放置了以下几行:
export C_INCLUDE_PATH=/usr/local/include:$C_INCLUDE_PATH
export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=/usr/local/lib:$LD_RUN_PATH
但是,mpfr
库configure
脚本仍然无法gmp
在/usr/local/lib
目录中找到我自己版本的库。
查看目录内部/etc/ld.so.conf.d
,我的文件内容libc.conf
是:
# libc default configuration
/usr/local/lib
此外,该文件的内容x86_64-linux-gnu.conf
如下:
# Multiarch support
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
但是locate libgmp
在命令行上运行显示系统已经自带了libgmp的版本。
$ locate libgmp
/usr/lib/x86_64-linux-gnu/libgmp.so.10
/usr/lib/x86_64-linux-gnu/libgmp.so.10.0.2
/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines/libgmp.so
/usr/share/doc/libgmp10
/usr/share/doc/libgmp10/README.Debian
/usr/share/doc/libgmp10/TODO.Debian
/usr/share/doc/libgmp10/changelog.Debian.gz
/usr/share/doc/libgmp10/copyright
/var/lib/dpkg/info/libgmp10:amd64.list
/var/lib/dpkg/info/libgmp10:amd64.md5sums
/var/lib/dpkg/info/libgmp10:amd64.postinst
/var/lib/dpkg/info/libgmp10:amd64.postrm
/var/lib/dpkg/info/libgmp10:amd64.shlibs
问题:
- 如何覆盖
libgmp
链接期间使用的版本的位置?我想使用\usr\local\lib
目录中的库。 - 我是否应该将
C_INCLUDE_PATH
和其他变量放在我的.pam_environment
文件中,或者是否有更合适的位置?
答案1
这个问题最简单的解决办法似乎是将库安装在另一个位置:
./configure --prefix=/home/usr/local
然后,在链接时选择此目录中的库。另一种可能性是重命名/usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines/libgmp.so
为其他名称,但如果该库由系统上安装的程序使用,那么这种方法就不是特别聪明了。