非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Ubuntu20.04にGTK+3をインストールしてちょっとハマったのでメモ

   

Ubuntu20.04にGTK+3をインストールしたのですが、ちょっとハマったのでメモしておきます。

以前にLinux MintにGTK+3をインストールした記事を書きましたが、まったく同じことをしたのにコンパイル時と実行時にちょっとすったもんだしました。今回はその対応含め書き留めます。

 

GTK+3のインストール

以下のコマンドでGtk+3のインストールができます。

sudo apt-get install libgtk-3-dev
 

 

こちらが作成したプログラムです。ウィンドウが現れてHello Worldと表示されます。Hello.cというファイル名で保存しました。

#include <gtk/gtk.h>

int main(int argc, char *argv[]){
  GtkWidget *window;
  GtkWidget *label;

  gtk_init (&argc, &argv);
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_size_request(window, 300, 200);
  //ウィンドウClose->終了
  g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

  label = gtk_label_new("Hello World");
  gtk_container_add(GTK_CONTAINER(window),label);
  gtk_widget_show(label);
  gtk_widget_show (window);

  gtk_main ();
  return(0);
}
 

 

ハマったこと(1)コンパイルできなかった

以下のコマンドでコンパイルできると思ったのですが…Linux Mint 19.3ではこれでOKだったんです

$ gcc hello.c 'pkg-config --cflags --libs gtk+-3.0'
 

 

以下の通り「gcc: error: pkg-config –cflags –libs gtk+-3.0: そのようなファイルやディレクトリはありません」というエラーが出てしまいました。

 

ここでGTK+3のインストール先を見てみたりとすったもんだがありましたが、結論、以下のコマンドでコンパイルできました。なぜLinux Mintだと上のコマンドでコンパイルできたのだろう…? ググってみたのですが結局明らかにはなっていません。

 

$ gcc hello.c -o out $(pkg-config --cflags --libs gtk+-3.0)
 

 

ハマったこと(2)クリック実行できなかった

無事コンパイルできて、以下のようにoutという実行ファイルが生成されました。いざ実行しようと思ってダブルクリックしたところ…

 

こんなエラーが出てしまいました。何かのソフトと紐付けようとしていて関連ソフトがなく失敗した時と同じエラーです。実行ファイルなのになぜ??

 

これは、Linux MIntの時も同じだったのですが、クリック実行できないんですよね。以下のようにコマンドラインから実行させなきゃいけないんです。

$ ./out
 

 

ご覧の通り実行できました。

 

コンパイル時のオプションで設定できないのかなと思って現在調べているところですが、gccってだいたいコマンド実行の例しかないんですよね。Linux Mintの時も同じ問題に直面して、結局それがGo言語からGTK+3を使うモチベーションに変わったわけです。(ということで、gccはこれくらいにしてGo言語からGTKを使うようにしよっと。)

 

スポンサーリンク

 - Gtk, Linux