libtool, добавляющий дополнительную букву "U" к именам файлов .so
Вопрос
У меня есть проект, созданный с помощью autotools, разделенный на две папки;первый из них, библиотека, создает несколько библиотек, а вторая, Инструменты, ссылки против них.
Сборка завершается неудачно, потому что libtool переименовывает библиотеки следующим образом при повторной компоновке:
mylib.1.0.0 -> mylib.1.0.0U
В любом случае, после переименования предыдущее имя не восстанавливается, равно как и новое mylib.1.0.0 создан, поэтому символические ссылки, такие как мой брат по-прежнему указывайте на название без лишних U и связывание завершается неудачей.
Есть ли какой-нибудь способ избежать этого?или, может быть, даже для того, чтобы вообще избежать повторной привязки?Я использую libtool версии 1.5.6.
Решение
Очевидно, я понял это...
Проблема легко воспроизводима с помощью следующей структуры:
- a библиотека папка, здание:
- либа
- libb, в зависимости от либа
- a Src папка, здание прогрессор, который связывает libb
Затем вы должны указать это в lib/Makefile.am:
lib_LTLIBRARIES = \
libb.la \
liba.la
В этот момент будет создан файл liba.so.1.0.0U.Указывая вместо этого (обратите внимание, что порядок библиотек изменен)
lib_LTLIBRARIES = \
liba.la \
libb.la
сборка работает нормально.
Я согласен, что указывать вещи в правильном порядке - это в любом случае лучшее, что можно сделать;что мне до сих пор неясно, так это ошибка libtool или нет...