web-dev-qa-db-ja.com

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
Agnes

詳細はわかりませんが、一部のパッケージとライブラリは、ファイルをそのようにインストールし、パスを使用してファイルをインストールするため、pkg-configを使用して正しいパスを見つけることができます。

polkitはありませんが、ここでは、glib-2.0について、pkg-configに、ライブラリglib-2.0( 「cflags」は、Cコンパイラで使用するフラグであり、リンク時に追加するインクルードパスとライブラリを指定します):

$ 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.0polkit-1を実行すると思います。

これらのパラメーターを使用してコンパイルするには、それらをmakefileの変数に格納するか、結果をコピーするか、マンページの次の例のように、シェルで直接pkg-configを呼び出すこともできます。

cc program.c $(pkg-config --cflags --libs gnomeui)

(実際、その例はMakefileルールですが、シェルでも実行できます。)

詳細については、マンページを参照し、.pc/usr/lib/pkgconfigおよびそれらの/usr/share/pkgconfig対応物の下で使用可能な/usr/localファイルを確認してください。

AFAIK、これは外部ライブラリでコンパイルするためのポータブルな方法です。

2
njsg

Gilesのコメントに同意し、njsgのpkg_commandは素晴らしいと思います。

リンクエディタld、ライブラリファイルの検索を有効にする別の一般的な戦略は、ldのマニュアルページから環境変数LD_LIBRARY_PATHにディレクトリを追加することです。

からman 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".

その他のオプションについては、manページをお読みください。

パッケージを再配置しないでください。

0
Rob