web-dev-qa-db-ja.com

コマンドはどこでライブラリを検索しますか

ライブラリとヘッダーファイルを検索するためにmakeコマンドが使用するパスを教えてもらえれば、 質問に投稿されたこれらのエラー を取得し、手動でパスを確認したいと思います。

Ubuntu 12.04 LTS、2.6.38-16カーネル、gccバージョン4.6.3があり、このパッケージをコンパイルしようとしています。

http://nrg.cs.ucl.ac.uk/mptcp/mptcp_userland_0.1.tar.gz

ありがとうございました。

2
loo3y35

makeコマンド自体は、ライブラリまたはヘッダーファイルを検索しません-代わりに、現在のディレクトリでMakefileを検索し(コマンドラインで-fオプションを使用して代替ファイルが指定されていない限り)、実行します内部の指示。これらは通常、gccg++などの特定のコンパイラーに対する指示です。

Makefileは、-I(インクルードファイル用)および/または-L(ライブラリ用)ディレクティブを使用して、特定のコンパイルコマンドの検索パスを追加できます。 default検索パスは、コンパイラのドキュメントで見つけることができます。 GNU gcc:検索パス または、コンパイラの冗長性を有効にして空のファイルを処理することにより、それらを直接リストできます。 gccインクルードパスとは

echo | `gcc -print-prog-name=cc1` -v

または、インクルードパス情報とライブラリパス情報の両方を表示するにはecho | gcc -xc -E -v -(Cの場合)またはecho | gcc -xc++ -E -v -(C++の場合)。

ただし、リンクした質問は、makeコマンドからではなく、./configureスクリプトからの出力のように見えます。 ./configureスクリプトはGNU automakeシステムの一部であり、さまざまなコンポーネントがどこに配置されているかを特定することにより、ローカルビルド環境用の 'カスタム' Makefileを作成するために使用されますyour system。ソースからビルドし、/usr/local/のような場所にインストールした他のビルド依存関係など、非標準の場所にライブラリがある場合、それらの場所を渡す必要がある場合があります./configureスクリプトへ.

./configure --with-foo=/usr/local --with-bar=/opt/bar_3.14

特定の手順については、ビルドしようとしているパッケージのREADMEまたは同様のドキュメントを参照する必要があります。

3
steeldriver