Debian は .la ファイルのサポートを終了しました。今どうやって構築すればいいですか?
質問
背景
最近出会ったのが、 fuppes UPnP メディアサーバー そしてそれは素晴らしいようでした。私はそれをホームサーバーにインストールし、XBox にビデオをストリーミングするために使用し始めました。それは本当にうまくいきました、そして私はそれに満足していました。その後、サーバーのディストリビューションをアップグレードしたところ、fuppes が動作しなくなってしまいました。今では、さまざまな図書館の価値が下がったためだとわかりました。特に debian は、パッケージの大部分から .la libtool ファイルを削除し始めました。.
問題/質問
そこで私の質問は、libtool 用の .la ファイルがない場合、どうやって fuppe をビルドするかということです。より具体的には、これは私の正確なエラーメッセージです。
/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 ファイルを見つけると、リンク コマンドにライブラリへのフル パスを入力するという厄介な癖があり、これが間違ったライブラリ (64 ビットではなく 32 ビット、またはその逆) である場合があります。Solaris では、libtool が /usr/lib/libintl.la を見つけたため、/usr/lib/64/libintl.so ではなく /usr/lib/libintl.so をリンクしようとするという問題がありました。
適切な Makefile.am 内の mumble_LIBADD 行 ('mumble' をビルドしているパッケージの名前に置き換えます) で -logg を指定すると、.la ファイルなしでリンクできるはずです。何らかの理由でリンカーがライブラリを見つけられない場合は、次のようなものを追加してライブラリへのパスを指定できます。
mumble_LDFLAGS = -R/usr/lib -L/usr/lib
ただし、この例では、/usr/lib がライブラリのデフォルトの検索パスにあると信じる必要があります。
sed に関する特定のエラー メッセージについては、fuppes が /usr/lib/libogg.la を見つけるために sed を使用する理由はわかりませんが、これは libtool の上流で (autoconf や automake など) 適切な変更を加えることによって修正される可能性があります。「configure」のどこかに、この問題を解決するスイッチがあるのではないかと思います (--with-ogg など)。「configure --help」を実行し、そこでヒントを探します。
他のヒント
.la ファイルは必要ないはずです。コマンド出力の重要な部分、つまりどのステップが libogg.la ファイルにリンクしようとしているのかを貼り付けていません。私の推測はlibtoolで、アップグレード後にautogen.shやconfigureを必要に応じて再実行せずに、ソースディレクトリまたはvcsチェックアウトでmakeを実行しているのではないかと思います。
要するに、これ以上役立つのに十分な情報が提供されていません (どうやって fuppes を入手しましたか?どうやって建てたのですか?アップグレード後にどのようにビルドしようとしましたか?)。おそらく、ビルド ファイルを再生成するのを忘れたか、他のリンカー ステップが .la ファイルを取り込んでおり、再生成する必要がある (pkg-config ファイルなど) かのどちらかです。