2017-06-16 5 views
0

https://developer.gnome.org/gtk3/stable/ch01s04.htmlでGTK +チュートリアルを完了しようとしていますが、コードをコンパイルするとエラーが発生します。-pthread:コマンドが見つかりません。私はUbuntu 17.04を使用しています。私のコンパイル・コマンドは次のとおりです。GTK +チュートリアルコンパイルエラー

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

私はからファイルをダウンロードした:私は、彼らが正しい知っている、https://git.gnome.org/browse/gtk+/tree/examples/application3。前もって感謝します。

以下のコメントに基づいてこれを追加してください。

/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/Scrt1.o: In function `_start': 

    (.text+0x20): undefined reference to `main' 

    collect2: error: ld returned 1 exit status 

は、その後、私はメインのコンパイル時に、私はエラーが表示されます:

/tmp/ccMOUa6f.o: In function `main': 

    main.c:(.text+0x19): undefined reference to `example_app_new' 

    collect2: error: ld returned 1 exit status   
+1

コンパイラの指定を忘れています。 – andlabs

+0

例: 'gcc -o exampleappwin exampleappwin.c \' pkg-config --libs gtk + -3.0 \ ''(ここでgccはandlabsのようなコンパイラです) –

+0

うわー!私はそれを信じられない!私はコメントに常にそれを入れて、カットアンドペーストすることができます。 OK。 '/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/Scrt1.o:関数' _start ': (.text)エラーが発生しました。 'main 'への未定義参照 collect2:エラー:ldが1終了ステータスを返しました。' mainをコンパイルしようとすると、エラーが発生します。 '/tmp/ccMOUa6f.o:' main'関数内: main .c :(。テキスト+ 0x19): 'example_app_new 'への未定義の参照 collect2:エラー:ldは1を返しました。終了ステータスは' – Guest123ABC

答えて

0

あなたが言及した例は、例の大きなセットの一部であり、メイクで使用するために用意していますかエラーを受信しました親ディレクトリ/フォルダから発行されたMeson。

"手作業で"コンパイルする場合は、処理する必要があるリソースファイルがあることに気づく必要があります。

The files mentioned on the question above

[...]$ ls 
exampleapp.c    exampleapp.h  exampleappwin.h Makefile.am  meson.build 
exampleapp.gresource.xml exampleappwin.c main.c   Makefile.example window.ui 
[...]$ 

、あなたがすべき、単なる一例をコンパイルするには:

gcc -o exampleapp main.c exampleapp.c exampleappwin.c `pkg-config --cflags --libs gtk+-3.0` 

これは、コンパイルされますが、あなたはそれを実行すると、警告が原因missingsリソースに表示されます。

./exampleapp 

(exampleapp:4171): Gtk-CRITICAL **: Unable to load resource for composite template for type 'ExampleAppWindow': The resource at '/org/gtk/exampleapp/window.ui' does not exist 
(exampleapp:4171): Gtk-CRITICAL **: gtk_widget_class_bind_template_child_full: assertion 'widget_class->priv->template != NULL' failed 
(exampleapp:4171): Gtk-CRITICAL **: gtk_widget_init_template: assertion 'template != NULL' failed 

今、あなたは(resources.cを作成します)リソースを準備する必要があります。その後、

glib-compile-resources exampleapp.gresource.xml --target=resources.c --sourcedir=. --generate-source 

と(上記resources.cファイルを追加)再コンパイル:

gcc -o exampleapp main.c exampleapp.c exampleappwin.c resources.c `pkg-config --cflags --libs gtk+-3.0` 

警告ウィンドウにはヘッダーバーが含まれている必要があります。

リソースのコンパイルに関する詳細は、 GTK/C and GtkBuilder to make a single executableですが、プロジェクトに既にあるようにMakeやMesonなどのビルドツールを使用する必要があることに注意してください。

もう1つのオプションは、サンプルプロジェクトをダウンロードしてすべてビルドすることです。

+0

です。私はそれをした、すべてが今までうまくいくようだ。どうもありがとうございました。最初の投稿には申し訳ありません。私はまだそれを信じることができません。ページをブックマークしました。再度、感謝します。ほんとうにありがとう。私はそのすべてを記録に残しました。それらを使ってGTKを学ぶ。 – Guest123ABC

+0

@ Guest123ABC GTKを学ぶにつれて、質問してもらえました。この回答があなたの質問を解決した場合は、それを正しく受け入れるよう自由にしてください。幸運 –

+0

私はあなたの答えを活気づけようとしましたが、私はその15の評判が少なくなっています。それは上昇を数えたと言いましたが、高い評価を得るまでは表示されません。 :) – Guest123ABC