*-dev
Ubuntuでパッケージを使用する方法は混乱しています。
libxml2
Ubuntuでこのライブラリを使用して独自のコードを開発したいと思います。を使用してlibxml2-devをインストールしましたがapt-get
、ヘッダファイルが/usr/include/libxml2/libxml
。
たとえば、ヘッダーファイルを含めるには、parse.h
次のパスを使用する必要がありますlibxml2/libxml/parser.h
。これはうまくいきましたが、一連の問題に直面しました。
parse.h
開発者が作成した別のヘッダーが含まれていますlibxml/xmlversion.h
。残念ながら、このパスは-dev
Ubuntuでヘッダーファイルを保存する方法と一致しません。つまり、xmlversion.h
(少なくとも私のプログラムでは)呼び出す必要がありますlibxml2/libxml/xmlversion.h
。
同様に、デフォルトの検索パスにもないxmlversion.h
ヘッダーを呼び出すと、連続した「該当ファイルなし」エラーが発生します。libxml/xmlexports.h
含める検索パスを手動で指定することで/usr/local/libxml2
この問題を解決できると思いましたがapt-get
、それでは、少なくともパッケージマネージャがパッケージを*-dev
インストールするときにコンパイラ検索パスを正しく設定したとします。
*-dev
パッケージを使用すると何が欠けていますか?これが正常な動作ですか、それとも特定の問題ですかlibxml2-dev
?apt
パッケージマネージャは、パッケージをインストールした後に何をすべきですか*-dev
?
答え1
開発パッケージには通常pkg-config
inが含まれています/usr/lib/pkgconfig
。このプログラムは、ライブラリの使用に必要なCコンパイラおよびリンカフラグを照会するために使用できます。
libxml2-dev
C コンパイラフラグの場合、以下が含まれます-I/usr/include/libxml2
。
$ pkg-config libxml-2.0 --cflags
-I/usr/include/libxml2
これを使用する1つの方法は次のとおりです。
gcc $(pkg-config libxml-2.0 --cflags --libs) main.c