
Ubuntu日本語フォーラム

ログインしていません。
gtk+-2.0を使用した簡単なグラフィックスプログラムを作ったところ、11.04では正常にコンパイルできたのに以下のエラーメッセージが
でてコンパイルエラーとなってしまいます。
make -f makefile-2a
gcc -g `pkg-config --cflags gtk+-2.0` -c circle-2.c
gcc -g `pkg-config --libs gtk+-2.0` circle-2.o -o circle-2
circle-2.o: In function `window_destroy':
/home/shi/data/pic/circle-2.c:28: undefined reference to `gtk_main_quit'
circle-2.o: In function `SetColor':
/home/shi/data/pic/circle-2.c:40: undefined reference to `gdk_colormap_get_system'
/home/shi/data/pic/circle-2.c:40: undefined reference to `gdk_color_alloc'
/home/shi/data/pic/circle-2.c:41: undefined reference to `gdk_gc_set_foreground'
.
.
.
/home/shi/data/pic/circle-2.c:122: undefined reference to `gtk_main'
collect2: ld はステータス 1 で終了しました
make: *** [circle-2] エラー 1
なおlibgtk2.0.0-devは、インストールされています。
pkg-config --libs gtk+-2.0の結果は
-pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0
でした。
どこに問題があるかわかりません。
諸賢のご教授を頂きたいのですが。
オフライン
未確認で申し訳ないのですが、ざっと、Ubuntuのパッケージ一覧を見た感じですと、11.10からGTKが3.0系に変更になっているということは無いでしょうか。
と、すると、11.04までは、特に追加でパッケージを入れることなくgtk2.0上の開発が出来ていたものが、11.10では、そのままでは出来ない ということにつじつまが合うとも割れます。
と、すると、以下のいずれかになりそうです。
・gtk-2.0系をインストールして、今までどおり開発する。
・gtk-3.0系で動作するよう、(必要であれば)ソースの修正を行なう。makeファイルの修正だけですむ可能性も有ります。
お勧めは、とりあえずは、makefileを修正して3.0系でコンパイル・リンクしてみるのが良いかと思います。それでだめなら、改めて2.0系のインストールかソースの修正かを比較検討し始めても遅くは無い と思いますし。
オフライン
ご意見ありがとうございます。
その後、pkg-configの結果すべてを引数にして、コンパイルしたところ、正常にコンパイルできました。
どうも、 不思議な話です。
オフライン