Чтобы правильно скомпилировать библиотеку mpfr
в моей системе Ubuntu 12.04.1 (64-битная), мне нужно обновить переменные C_INCLUDE_PATH
, LIBRARY_PATH
, LD_LIBRARY_PATH
и LD_RUN_PATH
. Это упомянуто в FAQ для построения библиотеки 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
[ 1135] Однако запуск 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
, или есть более подходящее место? Простейшим решением этой проблемы является установка библиотеки в другом месте:
./configure --prefix=/home/usr/local
Затем библиотека в этом каталоге выбирается при компоновке. Другой возможностью было бы переименовать /usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines/libgmp.so
во что-то другое, но это не особенно разумно, если библиотека используется программой, установленной в системе.