2009-11-03 8 views
1

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

Недавно я наткнулся на fuppes UPnP media server и, казалось большим. Я установил его на своем домашнем сервере и начал использовать его для потокового видео на моем XBox. Он работал очень хорошо, и я был доволен этим. Затем я обновил дистрибутив серверов, и fuppes перестали работать; Теперь я знаю, что это связано с тем, что различные библиотеки обесценились, в частности debian has started dropping the .la libtool files from the majority of their packages.

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

Так что мой вопрос, как я могу построить fuppes теперь, когда у меня нет этих файлов .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?

N.B. Это все на Ubuntu Karmic Koala

ответ

1

Я считаю, что 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» и найдите там какие-то намеки.

+2

Да, это на самом деле то, что я обнаружил. Я просто забыл вернуться сюда и сам ответить. У меня есть еще одна вещь, чтобы добавить к этому. Я использовал Ubuntu karmic Koala, и они являются одной версией Debian. Я подозреваю, что в версии пакета Debian эта проблема исправлена ​​(и, возможно, настройка также будет очищена). Поэтому, я думаю, я просто подожду следующей версии. Спасибо за всесторонний ответ. –

+2

Да, это действительно исправлено в ясности. Я проверил, и теперь я все рассказываю всем. –

1

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

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