非標準のプレフィックスでソフトウェアをインストールした場合は、PKG_CONFIG_PATH環境変数の調整を検討してください。これは何を意味するのでしょうか ?
PKG_CONFIG_PATH
は、pkg-config
が.pcファイルを検索する追加のパスを指定する環境変数です。
この変数は、pkg-configのデフォルトの検索パスを増やすために使用されます。典型的なUnixシステムでは、/usr/lib/pkgconfig
および/usr/share/pkgconfig
ディレクトリを検索します。これは通常、システムにインストールされたモジュールをカバーします。ただし、一部のローカルモジュールは、/usr/local
などの別のプレフィックスにインストールされる場合があります。その場合、pkg-configが.pcファイルを見つけることができるように、検索パスを追加する必要があります。
pkg-config
プログラムは、システムにインストールされているライブラリに関する情報を取得するために使用されます。 pkg-config
の主な用途は、プログラムをコンパイルしてライブラリにリンクするために必要な詳細を提供することです。このメタデータはpkg-configファイルに保存されます。これらのファイルには接尾辞.pcが付いており、pkg-configツールが認識している特定の場所にあります。
PKG_CONFIG_PATH
値を確認するには、次のコマンドを使用します。
echo $PKG_CONFIG_PATH
PKG_CONFIG_PATH
値を設定するには、次を使用します。
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
または
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
最初の答えは技術的に十分に明確ではありません。 manページから(ターミナルを開き、man pkg-config
と入力します):
pkg-config
は、特別なメタデータファイルからパッケージに関する情報を取得します。これらのファイルはパッケージにちなんで名前が付けられ、.pc
拡張子が付いています。ほとんどのシステムでは、pkg-config
は/usr/lib/pkgconfig
、/usr/share/pkgconfig
、/usr/local/lib/pkgconfig
および/usr/local/share/pkgconfig
でこれらのファイルを検索します。さらに、PKG_CONFIG_PATH
環境変数で指定されたディレクトリのコロン区切り(Windowsではセミコロン区切り)リストを調べます。
したがって、pkg-config
プログラムはPKG_CONFIG_PATH
ディレクトリにありません。ただし、ライブラリをインストールする場合、automake
スクリプトで使用する情報にアクセスするには、pkg-config
が認識しているディレクトリにある必要があります。
Pkg-config(バージョン0.24以降)がデフォルトでインストール済みライブラリを検索する場所を確認するには、次のコマンドを使用します。
pkg-config --variable pc_path pkg-config
そのパスを変更するには、PKG_CONFIG_PATH
環境変数を設定します。 manファイルには、PKG_CONFIG_PATH
が次のように記載されています。
.pcファイルを検索するための、コロンで区切られた(Windowsではセミコロンで区切られた)ディレクトリのリスト。デフォルトのディレクトリは、パスの検索後に常に検索されます。デフォルトはlibdir/pkgconfig:datadir/pkgconfigです。ここで、libdirはpkg-configのlibdir、datadirはpkg-configがインストールされたdatadirです。
あなたは、ソフトウェアの一部を構築しようとしています。ウィジェットとしましょう。 Widgetは、議論のために別のライブラリlibcogに依存しています。ウィジェットのビルドプロセス(おそらくconfigureスクリプト)は、pkg-configを使用してlibcogの使用方法を決定しています。 pkg-configはlibcogについて何も知りません。
Libcogがインストールされていない場合、それが問題です。 libcogの標準インストールで問題が修正される可能性は十分にあります。システムによっては、追加の「開発者」バージョンのパッケージをインストールする必要がある場合があります。多くの場合、末尾に「-devel」または「-dev」があるため、「libcog」をインストールする場合は、「libcog-devel」もインストールする必要があります。
Libcogがインストールされている場合、pkg-configが見つけられるような方法でインストールされていない可能性があります。おそらくシステムのどこかにlibcog.pcファイルがあります。議論のため、/ opt/cog/lib/pkgconfig/libcog.pcにあります。その場合、libcog.pcを保持するディレクトリにPKG_CONFIG_PATHを設定することにより、pkg-configに通知することができます。ボーンシェルなどで、
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/cog/lib/pkgconfig/
それが完了したら、失敗したコマンドを再実行するとうまくいきます。
ライブラリとヘッダーファイルを含むlibcogがインストールされていて、libcog.pcファイルがない場合は、うまくいきません。おそらく、libcogの標準インストールには情報が含まれています。そうでない場合、Widgetはそれに依存しません。最初にlibcogの再インストールを調査します。 libcog.pcファイルを手動で作成することは可能ですが、それを正しくすることは難しく、特定のライブラリに非常に固有です。
ほとんどの回答には必要以上の情報が含まれているように思えます。
インストールするソフトウェアは、いくつかのライブラリーやヘッダーに依存する場合があり(通常はそうします)、システムはpkg-configを使用してそれらを見つけます。
つまり、pkg-config
は、事前に定義された(デフォルトの)システムのディレクトリでこのファイルを探します。これらのフォルダーは「プレフィックス」です。例えば。接頭辞/usr/local
を持つライブラリは、/usr/local/include
にヘッダーがあると予想され、ライブラリ自体は/usr/local/lib
にあります。 pkg-configただし、環境変数にリストされているディレクトリ内のライブラリも検索しますPKG_CONFIG_PATH。
次に、フォルダのデフォルトリストの外にソフトウェアをインストールする場合、リストを「調整」する必要がありました。つまり、ディレクトリをPKG_CONFIG_PATHに追加します
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:<your-directory>
64ビットシステムのマンページを見て、少し混乱しました。一行で言った:
pkg-configは、特別なメタデータファイルからパッケージに関する情報を取得します。これらのファイルには、拡張子.pcが付いたパッケージ名が付けられます。デフォルトでは、pkg-configはこれらのファイルのディレクトリprefix/lib/pkgconfigを検索します。また、PKG_CONFIG_PATH環境変数で指定されたディレクトリのコロン区切り(Windowsではセミコロン区切り)リストも調べます。
Lib/pkgconfigディレクトリを常に検索すると想定していました。ディレクトリ自体が判明します。私の場合、hello world gtkチュートリアルをコンパイルしようとしていました。私が欲しいファイルを見つけます.
locate gtk | grep '\.pc'
結果の中には:
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
最後にエクスポートを行うことでした。
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/
これは、ソースから何かを構築しようとしており、必要な依存関係をすべて見つけることができないことを意味します。これらのライブラリの開発ファイルを見つけるために使用するpkg-config
スクリプトは、このメッセージを出力します。
https://github.com/confluentinc/confluent-kafka-go を使用している人
Librdkafkaのインストールに従ってください
これでgo install/go run go buildを使用できます
axel の最新バージョンをインストールしようとしていて、./configure
を実行しましたが、次のようになりました:
configure: error: Package requirements (openssl) were not met:
No package 'openssl' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables SSL_CFLAGS
and SSL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
だから私は試しました:
$ pkg-config --cflags openssl
そして私は得た:
Package openssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `openssl.pc'
to the PKG_CONFIG_PATH environment variable
No package 'openssl' found
明らかなように、opensslをインストールしました(Sudo apt-get install openssl
)しかし、上記の出力では、「パッケージ 'openssl'が見つかりません」と表示されています。だから私がやったことを確認するために:
find / -type f -name "*.pc" |& grep -iv permission | grep openssl
確かに他のパッケージが必要なので、少しググリングして、このパッケージをインストールする必要があることがわかりました。
Sudo apt-get install libssl-dev
そして、これはすべてpkg-configパスenv変数の変更とは何の関係もありませんでした。