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

StackOverflow https://stackoverflow.com/questions/367969

  •  21-08-2019
  •  | 
  •  

Вопрос

У меня есть проект, созданный с помощью 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 или нет...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top