Как заставить libtool указывать на установленную пользователем библиотеку? - PullRequest
3 голосов
/ 17 декабря 2011

Я пытаюсь установить rubygem, который продолжает пытаться прочитать библиотеку, которая недоступна.

grep: /usr/lib64/libgdbm.la: No such file or directory /bin/sed: can't read /usr/lib64/libgdbm.la: No such file or directory libtool: link: /usr/lib64/libgdbm.la' is not a valid libtool archive

Чтобы обойти это, я установил свой собственный libgdbmи предоставил путь к libgdbm в файлах LDFLAG make-файла, но безрезультатно.

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 25 января 2014

Libtool требует глубоких знаний о вашем наборе компиляторов и операционной системе, чтобы иметь возможность создавать общие библиотеки и правильно ссылаться на них.Когда вы устанавливаете дистрибутив libtool, в ваш двоичный каталог устанавливается системный скрипт libtool.Однако, когда вы распространяете libtool с вашими собственными пакетами, вы не всегда знаете набор компиляторов и операционную систему, которые используются для компиляции вашего пакета.

По этой причине libtool должен быть настроен, прежде чем его можно будет использовать.Эта идея должна быть знакома любому, кто использовал скрипт настройки GNU.configure запускает ряд тестов для системных функций, затем генерирует файлы Makefile (и, возможно, заголовочный файл config.h), после чего вы можете запустить make и собрать пакет.

Libtool добавляет свои собственные тесты в вашу конфигурациюскрипт для генерации скрипта libtool для хоста установщика.Для этого вы можете поиграть с макросом LT_INIT в файле configure.ac.

Короче говоря, если у вашего пакета есть файл конфигурации, запустите его перед запуском Make

make distclean //clean up all the previous generated files
autoconf //or autoreconf to generate configure script from configure.ac and configure.in
automake //to generate new Makefile.in from Makefile.ac
./configure //to generate new Makefile and libtool
1 голос
/ 17 декабря 2011

Этот rubygem, кажется, делает грязные вещи, так как любой чистый поиск в библиотеке (-L или pkg-config) привел бы к появлению сообщения типа "library / package gdbm not found". И особенно процедура grep-and-sed в файле la кажется очень грязной. Убедитесь, что Санта знает, что автор этого драгоценного камня не получит подарков в этом году.

Вероятно, у гема есть путь к архиву libtool в жестком коде. Прежде всего, попробуйте grep для /usr/lib64/libgdbm.la в Makefile драгоценного камня. Измените жестко заданный путь и убедитесь, что у установочного сценария нет разрешений на запись в какие-либо системные каталоги, потому что он, кажется, работает с «sed s.

».
...