PolicyKitを使用する必要があるアプリケーションを開発していますが、PolicyKitはGlibライブラリを使用しているようです。 PolicyKitをインストールしましたが、ヘッダーの位置がおよび/usr/include/polkit-1/
にあります/usr/include/glib-2.0
。
ヘッダーの内部位置は
/usr/include/
、、
/usr/include/polkit
です/usr/include/gobject
。
コンパイラがヘッダーがある場所が見つからないため、コンパイルできません。ヘッダー一つ一つ修正してみましたが、時間も長すぎていつ完成するのかわかりませんね。
ここでの問題は、インストール時にインストールされ/usr/include/polkit-1
、/usr/include/glib-2.0
いつ別々にインストールする必要があるかです/usr/include
。つまり、フォルダがあってはpolkit-1
なりませんglib-2.0
。ファイルとフォルダを適切な場所に配置してこの問題をすばやく解決する方法を知っている人はいますか?
答え1
詳細はわかりませんが、一部のパッケージとライブラリはこの方法でファイルをインストールし、pkg-config
正しいパスを見つけるために使用できるようにパスを使用してファイルをインストールします。
まだ使用していませんが、ここpolkit
ではライブラリで使用してコンパイルする「cflags」をglib-2.0
要求できます(「cflags」は、Cコンパイラがインクルードパスとライブラリにコンパイルするエントリを指定するために使用されるフラグです)。追加されたライブラリ)リンク):pkg-config
glib-2.0
$ pkg-config --cflags --libs glib-2.0
-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -lglib-2.0
私の考えでは、polkit-1
$ pkg-config --cflags --libs glib-2.0 polkit-1を実行するようです。
マンページの次の例に示すように、これらのパラメータを使用してコンパイルするには、そのパラメータをmakefileの変数に保存するか、結果をコピーするか、pkg-config
シェルから直接呼び出します。
cc program.c $(pkg-config --cflags --libs gnomeui)
(実際にはこの例はMakefile
ルールですが、シェルでもこれを行うことができます。)
詳細については、マンページを参照して、以下で利用可能なファイルとその.pc
ファイル /usr/lib/pkgconfig
を確認してください。/usr/share/pkgconfig
/usr/local
AFAIK、これは外部ライブラリにコンパイルする移植可能な方法です。
答え2
私はGilesのコメントに同意し、njsgのpkg_commandが素晴らしいと思います。
LD_LIBRARY_PATH
リンクエディタldを有効にしてライブラリファイルを見つけるもう1つの一般的な戦略は、そのディレクトリをldのマニュアルページの環境変数に追加することです。
~からのみLD
The linker uses the following search paths to locate required shared libraries: 1. Any directories specified by -rpath-link options. 2. Any directories specified by -rpath options. The difference between -rpath and -rpath-link is that directories specified by -rpath options are included in the executable and used at runtime, whereas the -rpath-link option is only effective at link time. Searching -rpath in this way is only supported by native linkers and cross linkers which have been configured with the --with-sysroot option. 3. On an ELF system, for native linkers, if the -rpath and -rpath-link options were not used, search the contents of the environment variable "LD_RUN_PATH". 4. On SunOS, if the -rpath option was not used, search any directories specified using -L options. 5. For a native linker, the search the contents of the environment variable "LD_LIBRARY_PATH".
その他のオプションについては、マニュアルページをお読みください。
パッケージを再配置しないでください。
答え3
ありがとうございます。私は以下を実行して問題を解決しました。
sudo cp -r /usr/include/polkit-1/polkit /usr/include/polkit
sudo cp -r /usr/include/polkit-1/polkitagent /usr/include/polkitagent
sudo cp -r /usr/include/polkit-1/polkitbackend /usr/include/polkitbackend
sudo cp -r /usr/include/glib-2.0/gio /usr/include/gio
sudo cp -r /usr/include/glib-2.0/glib /usr/include/glib
sudo cp -r /usr/include/glib-2.0/gobject /usr/include/gobject
sudo cp -r /usr/include/glib-2.0/glib-object.h /usr/include/glib-object.h
sudo cp -r /usr/include/glib-2.0/glib-unix.h /usr/include/glib-unix.h
sudo cp -r /usr/include/glib-2.0/glib.h /usr/include/glib.h
sudo cp -r /usr/include/glib-2.0/gmodule.h /usr/include/gmodule.h
もし同じ問題を抱えている方がお使いの場合は、そのglib-2.0
フォルダは引き続き使用されますので、削除しないでください。
とにかく、今はその情報が欠落しており、glibconfig.h
システムには存在しません。入手するには、何をインストールするのかわかりません。