libtool добавляет дополнительные 'U' к именам файлов .so - PullRequest
2 голосов
/ 15 декабря 2008

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

mylib.1.0.0 -> mylib.1.0.0U

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

1 Ответ

1 голос
/ 06 января 2009

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

  • a lib , сборка:
    • либ
    • libb , в зависимости от liba
  • a src , сборка prog , которая связывает libb

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

lib_LTLIBRARIES = \
    libb.la \
    liba.la

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

lib_LTLIBRARIES = \
    liba.la \
    libb.la

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

...