お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2012-10-01 19:22:16

futatsuya710
メンバ
登録日: 2012-08-27

初めてのGTK+でつまずいています

よろしくお願いします。
ここ10年ほどWindows MeでVisual Basic 6.0を使っていたのですが、
新しいPCを導入してから、Ubuntu12.04.1(64bit)を使い始めました。

C言語の応用がきいて、Windowsにも使えるGUIなアプリが作れるソフトを検索した結果、
GTK+を試してみる事にしました。
sudo apt-get install libgtk-3-dev
のコマンドでインストールした後、
http://samidarehetima.web.fc2.com/howtogtk/top.html
上記ページに記載されていた、ウィンドウを表示するだけの簡単なCファイルを作ってみました。

#include <gtk/gtk.h>

int main(int argc, char** argv){
  GtkWidget *window;
  gtk_init(&argc,&argv);
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request(window,300,200);
  g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
  gtk_widget_show(window);
  gtk_main();

  return 0;
}

これを、
gcc $(pkg-config --cflags --libs gtk+-3.0) ファイル名.c -o ファイル名
で実行してみたところ、
gtk_init
gtk_window_new
gtk_widget_set_size_request
gtk_main_quit
g_signal_connect_data
gtk_widget_show
gtk_main
が未定義なリファレンスなので、
collect2: ld はステータス1で終了しました
と、コンパイルエラーと思われる結果が表示されました。

GTK+3をUbuntu12.04で使っている例が見当たらないので、ここでつまずいています。
一応、gtk.hというヘッダファイルを検索してみたら、
/usr/include/gtk-3.0/gtk
にありました。

http://developer.gnome.org/gtk3/3.2/
とりあえず上記のページを見て、
「Compiling GTK+ Applications — How to compile your GTK+ application」
のページから
Compiling GTK+ Applications on UNIX
の項目にあった
pkg-config --cflags gtk+-3.0
pkg-config --libs gtk+-3.0
を実行してみたら、同じような結果が表示されました。
他に
「Compiling the GTK+ libraries — How to compile GTK+ itself」
のページも読みましたが、Linuxの素人がうかつに実行できない物と、足踏みしています。
「Getting Started with GTK+」
に記載されていた
gcc `pkg-config --cflags gtk+-3.0` -o window-default window-default.c `pkg-config --libs gtk+-3.0`
というコマンドを実行すると、
>
と表示されて、何も起っていないみたいです。

アドバイスを切望しています。よろしくお願い致します。

オフライン

 

#2 2012-10-01 20:13:53

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: 初めてのGTK+でつまずいています

引数の順番が間違っています。
私の環境では以下でコンパイルできました。

gcc sample.c -o sample `pkg-config --cflags --libs gtk+-3.0`

オフライン

 

#3 2012-10-01 20:37:51

futatsuya710
メンバ
登録日: 2012-08-27

Re: 初めてのGTK+でつまずいています

aaabbbcccdddeeefffggghhh様、アドバイスありがとうございました。

gcc ファイル名.c -o ファイル名 `pkg-config --cflags --libs gtk+-3.0`
でコンパイルしてみました。

gcc: エラー: pkg-config --cflags --libs gtk+-3.0: そのようなファイルやディレクトリはありません

GTK+のインストールに失敗しているのでしょうか?
確認方法、または対策があれば、ご助言をお願い致します。

オフライン

 

#4 2012-10-01 22:17:40

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: 初めてのGTK+でつまずいています

pkg-configはインストールしてありますか?

オフライン

 

#5 2012-10-01 22:42:09

futatsuya710
メンバ
登録日: 2012-08-27

Re: 初めてのGTK+でつまずいています

>pkg-configはインストールしてありますか?

Ubuntu12.04に標準搭載でなければ、恐らくインストールしていません。
インストール方法は
sudo apt-get install pkg-config
でよろしいのでしょうか?

オフライン

 

#6 2012-10-01 22:49:55

futatsuya710
メンバ
登録日: 2012-08-27

Re: 初めてのGTK+でつまずいています

Ubuntuソフトウェアセンターで確認してみました。
pkg-configは現在、バージョン0.26-1ubuntu1が入っており、
Canonicalにより重要なアップデートは、2017年4月まで提供されるとの事です。

オフライン

 

#7 2012-10-01 22:57:07

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: 初めてのGTK+でつまずいています

では端末で、以下のコマンドを実行してみてください。

pkg-config --cflags --libs gtk+-3.0

オフライン

 

#8 2012-10-01 23:23:48

futatsuya710
メンバ
登録日: 2012-08-27

Re: 初めてのGTK+でつまずいています

pkg-config --cflags --libs gtk+-3.0
を実行してみました。

-pthread I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12  -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0

と出力されました。

オフライン

 

#9 2012-10-01 23:37:44

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: 初めてのGTK+でつまずいています

うーん、問題ないように見えますね。
pkg-configが無いか、gtk+-3.0が無いか、コンパイル対象のソースファイルが無いかのどれかだと思ったのですが。

ファイル名.cは存在していますよね?無いとは思いますが、名前の打ち間違いの可能性はどうでしょうか?

futatsuya710 による投稿:

-pthread I/usr/include/gtk-3.0

この部分はコピーミスですよね?
私の環境では

-pthread -I/usr/include/gtk-3.0

となってますので。

オフライン

 

#10 2012-10-02 00:45:41

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: 初めてのGTK+でつまずいています

何となく原因が分かりました。
とりあえず、今まで私が書いたことは忘れて、以下のように実行してコンパイルしてみてください。

gcc ファイル名.c -o ファイル名 $(pkg-config --cflags --libs gtk+-3.0)

これで出来るはずです。

オフライン

 

#11 2012-10-02 12:22:58

futatsuya710
メンバ
登録日: 2012-08-27

Re: 初めてのGTK+でつまずいています

aaabbbcccdddeeefffggghhh様、返信が遅れ、失礼致しました。
pkg-config --cflags --libs gtk+-3.0
の冒頭はご指摘の通り、記載ミスです。

アドバイスいただいた通り、
gcc ファイル名.c -o ファイル名 $(pkg-config --cflags --libs gtk+-3.0)
でコンパイルに成功し、実行ファイルが作成されました。
ウィンドウが表示されます。

お蔭様で、GTK+の勉強ができそうです。
ご助言をいただき、誠にありがとうございました。

オフライン

 

Board footer

Powered by FluxBB