web-dev-qa-db-ja.com

UbuntuでのGTK3とCプロジェクトのコンパイルとリンク

これは重複した質問ではないと思います。この質問を投稿する前に、すべての質問/回答を見てきました。私はここで別の状況にあると思います。

Ubuntu 12.04を使用してダウンロードしましたGTK 2および。 GNOMEのウェブサイトから簡単なGTKソースコードをコピーしました。しかし、ターミナルでこのコマンドを使用すると、次のようになります。

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

私はこれを得る:

hello.c:(.text+0x17): undefined reference to `gtk_init'
hello.c:(.text+0x23): undefined reference to `gtk_window_new'
hello.c:(.text+0x47): undefined reference to `gtk_main_quit'
hello.c:(.text+0x5b): undefined reference to `g_signal_connect_data'
hello.c:(.text+0x67): undefined reference to `gtk_widget_show'
hello.c:(.text+0x6c): undefined reference to `gtk_main'

これが私のコードです:

#include <gtk/gtk.h>

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

  gtk_init (&argc, &argv);

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

  gtk_widget_show (window);

  gtk_main ();

  return 0;
}

GTK +のバージョンが2つあるので、エラーが表示されるかどうかはわかりません。私はUbuntu/Linuxでのアプリケーション開発の初心者です。

17
Anwar

ライブラリの前にgcc hello.c $(pkg-config --cflags --libs gtk+-3.0) -o helloとして表示されるソースファイルを使用してコンパイルする必要があります。これは、リンカーの動作、つまり、コンパイルの前にそのライブラリのシンボルが表示されない限り、ライブラリをリンクしないためです。
お役に立てれば!

24