polkitとglibのヘッダーを含む場所を変更するには?

polkitとglibのヘッダーを含む場所を変更するには?

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-configglib-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システムには存在しません。入手するには、何をインストールするのかわかりません。

関連情報