В Debian прекращена поддержка файлов .la;как мне теперь строить?

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

  •  13-09-2019
  •  | 
  •  

Вопрос

Фон

Недавно я наткнулся на медиасервер fuppes UPnP и это казалось отличным.Я установил его на свой домашний сервер и начал использовать для потоковой передачи видео на свой XBox.Это сработало действительно очень хорошо, и я был этому рад.Затем я обновил дистрибутив своих серверов, и фуппы перестали работать;Теперь я знаю, что это потому, что обесценились различные библиотеки, в частности Debian начал удалять файлы .la libtool из большинства своих пакетов..

Проблема/Вопрос

Итак, мой вопрос: как мне собрать фуппы теперь, когда у меня нет файлов .la для libtool?Более конкретно, это мое точное сообщение об ошибке:

/bin/sed: can't read /usr/lib/libogg.la: No such file or directory
libtool: link: `/usr/lib/libogg.la' is not a valid libtool archive

У меня больше нет файла /usr/lib/libogg.la.Это доказывает это из терминала:

# dpkg -L libogg-dev | grep "a$"
/usr/lib/libogg.a
#

Мне просто нужно указать правильное направление.Я прочитал документацию libtool-automake, но мне все еще не хватает той информации, которая подсказывает мне, как компилировать теперь, когда у меня больше нет libogg.la.Короче говоря, как мне скомпилировать при отсутствии файлов .la?

Н.Б.Это все в Ubuntu Karmic Koala.

Это было полезно?

Решение

Я считаю, что Debian удалил файлы .la, потому что это может вызвать проблемы при сборке как для 32-битной, так и для 64-битной версии.Если libtool находит файл .la, у него есть неприятная привычка указывать полный путь к библиотеке в команде link, и иногда это не та библиотека (32-битная вместо 64-битной или наоборот).В Solaris у меня возникла проблема с тем, что libtool хотел связать /usr/lib/libintl.so вместо /usr/lib/64/libintl.so, и все потому, что он нашел /usr/lib/libintl.la.

У вас должна быть возможность создать ссылку без файла .la, указав -logg в строке mumble_LIBADD (замените «mumble» именем собираемого вами пакета) в соответствующем файле Makefile.am.Если по какой-то причине компоновщик не может найти библиотеку, вы можете указать путь к ней, добавив что-то вроде этого:

mumble_LDFLAGS = -R/usr/lib -L/usr/lib

Но в этом примере я должен верить, что /usr/lib находится в пути поиска библиотек по умолчанию.

Что касается вашего конкретного сообщения об ошибке с sed, я не знаю, почему fuppes использует sed для поиска /usr/lib/libogg.la, но, надеюсь, это может быть исправлено путем соответствующего изменения в исходной версии libtool (например, в autoconf или automake).Я подозреваю, что где-то в «configure» есть переключатель, который помогает решить эту проблему (например, --with-ogg или что-то в этом роде).Запустите «configure --help» и найдите там подсказки.

Другие советы

Вам не понадобятся файлы .la.Вы не вставили важные части вывода команды — какой шаг пытается связать с файлом libogg.la.Я предполагаю, что это libtool, и я предполагаю, что после обновления вы запускаете make в исходном каталоге или проверку vcs без повторного запуска autogen.sh или настройки соответствующим образом.

Короче говоря, вы не даете достаточно информации, чтобы помочь вам в дальнейшем (Как вы получили фуппес?Как вы его построили?Как вы пытались его собрать после обновления?).Скорее всего, либо вы забыли перегенерировать файлы сборки, либо какой-то другой шаг компоновщика подтягивает файл .la и его необходимо перегенерировать (например, файл pkg-config).

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