5番目のブラウザ - 構成スクリプトに依存関係を認識させる方法は何ですか?

5番目のブラウザ - 構成スクリプトに依存関係を認識させる方法は何ですか?

5番目のブラウザをインストールしようとしています(ウェブサイト)(旗ハブリンク)Xubuntu 16.04.2 LTSで。

公式のデプロイメントリポジトリからすべての依存関係を取得し、Synapticを使用してインストールできました。それらの一つ5番目のホームページに記載されているようにliburlmatchと呼ばれます(旗ハブリンク)。ワイルドカードを使用するときにURLをブロックできる単純なライブラリのようです。

次のようにurlmatchをインストールしました:
/ git clone https://github.com/clbr/urlmatch.git次に、
別のフォルダに/ sudo checkinstallをインストールします。これは完璧に動作するようです。

5番目のフォルダで./configureを実行すると、最後の数行は次のようになります。

checking for fltk-config13... no
checking for fltk-config... fltk-config
checking for url_init in -lurlmatch... no
configure: error: liburlmatch not found

あなたの便宜のために、以下のPastebinでurlmatch関連の設定ファイルセクションを見つけることができます。liburlmatch 構成のコードブロック

私は何が間違っていましたか?構成スクリプトがurlmatcherライブラリを認識しないのはなぜですか?あなたの答えでこれらのプログラムをコンパイルすることが初めてであることを検討してください。ありがとうございます。

ベストアンサー1

問題は、実際には、Fifth-5.0の設定スクリプトがurlmatchライブラリのconftestを構築して実行する方法に関連しているようです。

1. エラー

checking for url_init in -lurlmatch... no
configure: error: liburlmatch not found

これは多少誤解を招くことがわかります。見てみるとconfig.log、関数への未定義の参照のために conftest が実際に構築されていないことがわかりますuncompress

configure:5511: checking for url_init in -lurlmatch
configure:5546: g++ -o conftest -g -O2 -pthread  -isystem /usr/include/cairo -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/pixman-1 -isystem /usr/include/freetype2 -isystem /usr/include/libpng12 -isystem /usr/include/freetype2 -isystem /usr/include/cairo -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/pixman-1 -isystem /usr/include/freetype2 -isystem /usr/include/libpng12 -fvisibility-inlines-hidden  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT   -lz conftest.cpp -lurlmatch    -Wl,-Bsymbolic-functions -lfltk_images -lfltk -lX11 >&5
//usr/local/lib/liburlmatch.a(opti_init.o): In function `initbin':
opti_init.c:(.text+0xd6): undefined reference to `uncompress'
collect2: error: ld returned 1 exit status
configure:5552: $? = 1

その理由は〜uncompressに接続されているからです。libz今後 liburlmatch:

. . .   -lz conftest.cpp -lurlmatch -Wl,-Bsymbolic-functions -lfltk_images -lfltk -lX11 >&5

両方のライブラリの必須接続順序に従わない1 configure.acこれにより、スクリプトを生成したファイルまで詳細に追跡できます。configure

# Checks for libraries.
OLD_LDFLAGS=[$LDFLAGS]
LDFLAGS=["$LDFLAGS -lz"]
AC_CHECK_LIB([urlmatch], [url_init], [], AC_MSG_ERROR([liburlmatch not found]))
LDFLAGS=[$OLD_LDFLAGS]

LIBSつまり、リストに追加されるのではなく、追加-lzされますLDFLAGS(追加のライブラリを指定するためにより一般的に使用されます)。前にLIBS)。

迅速で汚い解決策は、./configure明示的なLIBSパラメータを使用して呼び出すことです。

./configure "LIBS=-lz"

これにより、コマンドライン-lzに追加のコンテンツが配置されます。g++後ろにライブラリurlmatch(他の頭にありますLIBS):

. . . -lz conftest.cpp -lurlmatch -lz -Wl,-Bsymbolic-functions -lfltk_images -lfltk -lX11 >&5

より永続的な解決策は、代わりに追加するファイルを変更してからconfigure.ac再構築(または必要に応じて)を使用することです。-lzLIBSLDFLAGSconfigureautoconfautoreconf


参考資料:

  1. gccで "-l"オプションの順序が重要なのはなぜですか?

おすすめ記事