
Ubuntu日本語フォーラム

ログインしていません。
よろしくお願いします。
ここ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`
というコマンドを実行すると、
>
と表示されて、何も起っていないみたいです。
アドバイスを切望しています。よろしくお願い致します。
オフライン
引数の順番が間違っています。
私の環境では以下でコンパイルできました。
gcc sample.c -o sample `pkg-config --cflags --libs gtk+-3.0`
オフライン
aaabbbcccdddeeefffggghhh様、アドバイスありがとうございました。
gcc ファイル名.c -o ファイル名 `pkg-config --cflags --libs gtk+-3.0`
でコンパイルしてみました。
gcc: エラー: pkg-config --cflags --libs gtk+-3.0: そのようなファイルやディレクトリはありません
GTK+のインストールに失敗しているのでしょうか?
確認方法、または対策があれば、ご助言をお願い致します。
オフライン
>pkg-configはインストールしてありますか?
Ubuntu12.04に標準搭載でなければ、恐らくインストールしていません。
インストール方法は
sudo apt-get install pkg-config
でよろしいのでしょうか?
オフライン
Ubuntuソフトウェアセンターで確認してみました。
pkg-configは現在、バージョン0.26-1ubuntu1が入っており、
Canonicalにより重要なアップデートは、2017年4月まで提供されるとの事です。
オフライン
では端末で、以下のコマンドを実行してみてください。
pkg-config --cflags --libs gtk+-3.0
オフライン
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
と出力されました。
オフライン
うーん、問題ないように見えますね。
pkg-configが無いか、gtk+-3.0が無いか、コンパイル対象のソースファイルが無いかのどれかだと思ったのですが。
ファイル名.cは存在していますよね?無いとは思いますが、名前の打ち間違いの可能性はどうでしょうか?
futatsuya710 による投稿:
-pthread I/usr/include/gtk-3.0
この部分はコピーミスですよね?
私の環境では
-pthread -I/usr/include/gtk-3.0
となってますので。
オフライン
何となく原因が分かりました。
とりあえず、今まで私が書いたことは忘れて、以下のように実行してコンパイルしてみてください。
gcc ファイル名.c -o ファイル名 $(pkg-config --cflags --libs gtk+-3.0)
これで出来るはずです。
オフライン
aaabbbcccdddeeefffggghhh様、返信が遅れ、失礼致しました。
pkg-config --cflags --libs gtk+-3.0
の冒頭はご指摘の通り、記載ミスです。
アドバイスいただいた通り、
gcc ファイル名.c -o ファイル名 $(pkg-config --cflags --libs gtk+-3.0)
でコンパイルに成功し、実行ファイルが作成されました。
ウィンドウが表示されます。
お蔭様で、GTK+の勉強ができそうです。
ご助言をいただき、誠にありがとうございました。
オフライン