これは重複した質問ではないと思います。この質問を投稿する前に、すべての質問/回答を見てきました。私はここで別の状況にあると思います。
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でのアプリケーション開発の初心者です。
ライブラリの前にgcc hello.c $(pkg-config --cflags --libs gtk+-3.0) -o hello
として表示されるソースファイルを使用してコンパイルする必要があります。これは、リンカーの動作、つまり、コンパイルの前にそのライブラリのシンボルが表示されない限り、ライブラリをリンクしないためです。
お役に立てれば!