2009-06-24 29 views
4

私はラインを含んでGTKを使用して、ハロー世界を構築しようとしている:ヘッダファイル(例:GTK/gtk.h VS GTK-2.0/GTK/gtk.h)

#include <gtk/gtk.h> 

としてあなたは期待するでしょう。

GTK_INCLUDE = -I/usr/local/include 

ので、それは/usr/local/include/gtk/gtk.hでgtk.hを見つけることを期待する:

のMakefileが供給されるラインを持っています。しかし、私のシステムでは、/usr/local/include/gtk-2.0/gtk/gtk.hにあります。つまり、version'edサブディレクトリ内にあります。

この場合、明らかに-I/usr/local/include/gtk-2.0をMakefileに追加することができますが、gtk.hの依存関係などで同じ問題が発生します。

これに対処する良い方法はありますか?ヘッダーファイルの場所を特定し、適切なインクルードディレクトリを追加するためにconfigureを使用できますか?私はconfigureに関する何もないことを知っていますが、ビルド時にはシステムに関することを見つけているようです。

これは一般的な現象ですか、または実際の問題であるいくつかのフリークディレクトリ構造を持っていますか?

ありがとうございました!

+0

重複:http://stackoverflow.com/questions/510098 – ephemient

答えて

8

あなたには、パスを取得するためにpkg-configを使用する必要があります。

$ pkg-config --cflags gtk+-2.0 
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 

ます。また、ライブラリ得るためにそれを使用する必要があります。

$ pkg-config --libs gtk+-2.0 
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lgio-2.0 -lcairo -lpango-1.0 -lfreetype -lz -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 

を(これらのコマンドの出力は、あなたによって異なりますあなたの配布には常に正しいものになります)。

+0

ありがとう、これは私の後ろにあるように見えます - 私はあなたのpkg-configの例がより特定のインクルードディレクトリを必要とする(パンゴのように)作成する他のインクルードのいくつかを認識します。 – Ray2k

4

おそらく、あなたのようなシンボリックリンクを作成する必要があります。

ln -s /usr/local/include/gtk /usr/local/include/gtk-2.0 

をしかし、あなたは最初のGTKのパッケージを再インストールしようとすることができます。

+1

私はこれを考えていましたが、それはしませんでした特に、同じように変更する必要があるすべてのものを考慮して、適切なことを実行してください。 – Ray2k

2

私は長い間gtkを使用していませんでしたが、Linuxで通常処理される方法は、開発ヘッダーに付属するpackagename-config(この場合はおそらくgtk-config)というスクリプトがありますこれは、makefileが--cflagsと--libsをそれぞれ使用してパッケージの適切なインクルードパスとリンカーフラグを取得するために呼び出すはずです。

ので(注意バッククォートの使用ではなく、アポストロフィ)

GTK_INCLUDE=`gtk-config --cflags` 

のようなものを試してみて、あなたはおそらくも、あなたがしていることを確認するために、あなたのLDFLAGSにgtk-config --libsの出力を追加したいですすべての適切なものとのリンク。

+1

AFAIRでは、gtk-configは以前から汎用のpkg-configに置き換えられていました(packagename-configスタイルのスクリプトの他の多くの用途があります)。 – CesarB

関連する問題