libtool добавляет дополнительную букву «U» к именам файлов .so

У меня есть проект, созданный с помощью автоинструментов, разделенный на две папки; первый, lib, создает несколько библиотек, а второй, tools, связывает их.
Сборка завершается ошибкой, поскольку libtool переименовывает библиотеки следующим образом при повторном связывании. :

mylib.1.0.0 -> mylib.1.0.0U

В любом случае после переименования предыдущее имя не восстанавливается и не создается новая mylib.1.0.0, поэтому символические ссылки, такие как mylib, по-прежнему указывают на имя без лишнего U, и связь не сработает.
Есть ли способ избежать этого? или, может быть, даже для того, чтобы вообще избежать перелинковки? Я использую libtool версии 1.5.6.


person Paolo Tedesco    schedule 15.12.2008    source источник
comment
Вероятно, вам следует отменить последнее редактирование и вместо этого правильно ответить на вопрос.   -  person Johan Dahlin    schedule 16.12.2008


Ответы (1)


Очевидно, я понял...
Проблема легко воспроизводима со следующей структурой:

  • a lib folder, building:
    • liba
    • libb, в зависимости от libb
  • папка src, создающая prog, которая связывает libb

Затем вы должны указать это в lib/Makefile.am:

lib_LTLIBRARIES = \
    libb.la \
    liba.la

В этот момент будет создан файл liba.so.1.0.0U. Вместо этого укажите (обратите внимание, что порядок библиотек изменен)

lib_LTLIBRARIES = \
    liba.la \
    libb.la

сборка работает нормально.
Я согласен, что указывать вещи в правильном порядке в любом случае лучше всего; что мне до сих пор неясно, является ли это ошибкой libtool или нет...

person Paolo Tedesco    schedule 06.01.2009