Компиляция GnuPG связывает gpg2 с /lib вместо /usr/local/lib/

Изредка мне приходится устанавливать новые пакеты на серверах. Если мне повезет, я могу найти RPM, в противном случае, я бьюсь головой об стену и пытаюсь скомпилировать пакет.

На этот раз я собираюсь скомпилировать GnuPG для получения версии 2.1.15. Поэтому я загружаю все зависимые библиотеки, запускаю configure && make install, наконец, повторяю для самого пакета gnupg-2.1.15, и все идет хорошо, и make помещает все в /usr/local/, включая библиотеки и двоичные файлы. Чувствуя себя счастливым, я проверяю версию:

$ /usr/local/bin/gpg2 --version
gpg: Fatal: libgcrypt is too old (need 1.7.0, have 1.6.6)

К сожалению. Что случилось, поэтому я проверяю связанные библиотеки:

$ ldd /usr/local/bin/gpg2
linux-vdso.so.1 (0x00007fff15db4000)
libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007fcab5431000)
libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007fcab521d000)
libassuan.so.0 => /lib64/libassuan.so.0 (0x00007fcab5009000)
libc.so.6 => /lib64/libc.so.6 (0x00007fcab4c47000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fcab4a43000)
/lib64/ld-linux-x86-64.so.2 (0x00005615f5c77000)

Тьфу, старые встроенные системные библиотеки были связаны. Я не много компилирую программное обеспечение, поэтому я застрял здесь, пытаясь выяснить, как сказать gcc через configure (или другое?) Связать зависимые библиотеки, которые были только что установлены в /usr/local/lib/

Это моя команда настройки для gnupg-2.1.15:

./configure --prefix=/usr/local --with-libgpg-error-prefix=/usr/local/\
--with-libgcrypt-prefix=/usr/local --with-libassuan-prefix=/usr/local\
--with-ksba-prefix=/usr/local --with-npth-prefix=/usr/local

Выполнение этого на Fedora 24 с последними обновлениями и установленным ядром и gcc 6.2.1.

Спасибо, что нашли время рассмотреть мою проблему.

1 ответ

Решение

Кажется, вам нужна определенная версия программы с зависимыми библиотеками или вы экспериментируете с вашей системой.

Вы можете использовать переменную среды LD_LIBRARY_PATH изменить путь поиска компоновщика, чтобы найти новую библиотеку и использовать ее вместо старой. Вот страница, чтобы предоставить более подробную информацию об этом.

Ты можешь попробовать export LD_LIBRARY_PATH=/usr/local/path/to/lib/directory перед выполнением вашей программы. Чтобы сделать это постоянным, вы можете изменить ldconfig пути поиска (обычно файлы под /etc/ld.so.conf.d), а затем вызвать ldconfig обновить кеши.

Другие вопросы по тегам