回答:
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
が認識しているディレクトリにある必要があります。
/usr/local/lib/x86_64-linux-gnu
無料の(空のPKG_CONFIG_PATH
)自動検索場所として、そして実際には、.pc
GTK +などを含む多くのファイルがスローされます。-そこに住んでいます。この理由は、ここで概説するように、パッケージのマルチアーキテクチャ可用性を同時に有効にするためです:askubuntu.com/questions/449348/…–
pkg-config
システムで検索するデフォルトのパスを確認する方法を示しました:askubuntu.com/a/373217/436580
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です。
echo $(pkg-config --variable pc_path pkg-config)${PKG_CONFIG_PATH:+:}${PKG_CONFIG_PATH}
PKG_CONFIG_PATH
デフォルトの検索ディレクトリがあり、空白以外の値を設定してもデフォルトはクリアされません。
あなたは、ソフトウェアの一部を構築しようとしています。ウィジェットとしましょう。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ファイルを手動で作成することは可能ですが、それを正しくすることは難しく、特定のライブラリに非常に固有です。
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/
man
は、最新のマルチアーキテクチャ対応システムでページがどのように単純化されすぎているかを指摘するためのものです。Debian 8 x86ではpkg-config
、x86_64フォルダーを既に(何も含まずにPKG_CONFIG_PATH
)見ているため、しばらく混乱していました。これがどのように組み込まれたかはわかりませんが、@ GrandAdmiralによって示されるこれをプローブするコマンドライン--variable pc_path
は、それがpkg-config
自身のパッケージに設定されている(なんとか!)によって制御されていることを示しています。
ほとんどの答えには必要以上の情報が含まれているように思えます。
インストールするソフトウェアは、いくつかのライブラリーやヘッダーに依存する可能性があり(通常はそうします)、システムは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>
詳細については、こちらとこちらをご覧ください
PKG_CONFIG_PATH
(指定)ファイルのみ を検索する追加のディレクトリを指定します。ライブラリ検索ディレクトリなどのpkg固有のものには影響しません。yourPkg.pc
pkg-config
私は、最新バージョンのインストールしようとしていたアクセルを、私は走った./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変数の変更とは何の関係もありませんでした。
https://github.com/confluentinc/confluent-kafka-goを使用している人
librdkafkaのインストールに従ってください
これでgo install / go run go buildを使用できます