Относительные или независимые пути в файле .la libtool

Мой файл .la имеет полные пути как в разделе dependency_libs=, так и в разделе libdir=, что затрудняет копирование моих библиотек на другую машину (та же арка, но другая структура пути). Каково решение этой проблемы, кроме того, что есть какой-то скрипт для взлома файла .la для настройки путей на новой машине?

==Подробности==

Когда я ./configure; make; make install libfoo, в зависимости от того, как я использую флаги --prefix, --exec-prefix и DESTDIR=, я получу запись в файле libfoo.la, которая читает libdir=/dir1/lib, и у меня будут фактические файлы .so в том же каталоге, что и libfoo.la. Все хорошо (с точки зрения связывания чего-то с libfoo как есть), пока я не упакую их и не поставлю на другую машину.

Допустим, у меня есть libbar на моей второй машине, которая зависит от libfoo. Когда я использую свой флаг -L/dir2/lib для поиска -lfoo, компиляция/связывание libbar терпит неудачу, потому что файл libfoo.la ожидает установки foo в /dir1/lib (с первой машины), хотя на самом деле он находится в /dir2/lib. Затем мне нужно заменить все dir1 на правильный путь, оба из которых могут быть длинными и сложными.

Линия dependency_libs= также вступает в игру аналогичным образом.

Как избежать этой проблемы?


person s g    schedule 20.03.2014    source источник
comment
Пробовали ли вы метод поэтапной установки из руководства по automake?   -  person DanielKO    schedule 21.03.2014
comment
Да, именно поэтому я упомянул префикс и флаги DESTDIR. Все, что я могу сделать для меня, это поместить мой вывод в определенный каталог... та же проблема, хотя файлы .la будут иметь в них абсолютный путь, поэтому я сталкиваюсь с проблемами, когда перемещаю их   -  person s g    schedule 17.04.2014
comment
Нашли ли вы какое-либо решение проблемы? За исключением взлома файлов .la.   -  person amaslenn    schedule 12.08.2018
comment
Это было много лет назад, но я помню, что так и не нашел хорошего решения :-\   -  person s g    schedule 13.08.2018
comment
Просто наткнулся на этот вопрос, а также все еще борюсь с этим здесь во время кросс-компиляции. Каким-то образом должна быть возможность предоставить sysroot или что-то похожее на libtool при правильном выполнении make install? Это так расстраивает, что приходится вручную редактировать пути зависимостей .la. Или лучше не использовать команду make install DESTDIR на хост-компьютере для установки библиотек в системный корень, который впоследствии можно будет скопировать в цель? Так много вопросов. :D   -  person YVbakker    schedule 23.09.2020