0

powerpc ターゲット ボード用の directFB バックエンドを備えた GTK+- 2.10.14 をインストールしました。ターゲット ボードでサンプル アプリケーションを実行し、ターゲット LCD に GUI が表示されるのを確認できました。 Glade で独自の GUI を作成したところ、.glade ファイルをコンパイルするには gtkbuildet が必要であることがわかりました。gtkbuilder はバージョン GTK+-2.12.0 から使用できるため、GTK+-2.12.0 を再度インストールし、このチュートリアルで説明する以下の手順を実行します。

次のように私のプログラム:

#include<gtk/gtk.h>

int
main( int    argc,char **argv )
{

GtkBuilder *builder;
GtkWidget  *window;
GError     *error = NULL;

/* Init GTK+ */
gtk_init( &argc, &argv );

/* Create new GtkBuilder object */
builder = gtk_builder_new();
/* Load UI from file. If error occurs, report it and quit application.
*      * Replace "tut.glade" with your saved project. */
if( ! gtk_builder_add_from_file( builder, "graph.glade", &error ) )
    {
        g_warning( "%s", error->message );
        g_free( error );
        return( 1 );
    }

/* Get main window pointer from UI */
window = GTK_WIDGET( gtk_builder_get_object( builder, "window1" ) );

/* Connect signals */
gtk_builder_connect_signals( builder, NULL );

/* Destroy builder, since we don't need it anymore */
g_object_unref( G_OBJECT( builder ) );

/* Show window. All other widgets are automatically shown by GtkBuilder */
gtk_widget_show( window );

/* Start main loop */
gtk_main();

return( 0 );
}

上記のプログラムをコンパイルすると、次のようなエラーが発生しました。

powerpc-linux-gnu-gcc progressbar.c -o progressbar -pthread -I/opt/gtkdfb/usr/local/include/glib-2.0 -I/opt/gtkdfb/usr/local/lib/glib-2.0/include -I/opt/gtkdfb/usr/local/include/pango-1.0 -I/opt/gtkdfb/usr/local/include/cairo -I/opt/gtkdfb/usr/local/include -I/opt/gtkdfb/usr/local/freetype2 -I/opt/gtkdfb/usr/local/libpng12 -I/opt/gtkdfb/usr/local/includegtk-2.0 -D_REENTRANT -D_GNU_SOURCE -I/opt/gtkdfb/usr/include/directfb -L/opt/gtkdfb/usr/local/lib  -ldirectfb -lfusion -ldirect -lpthread -ldl -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lxml2 -lpng12 -lgthread-2.0 -lgtk-directfb-2.0 -lffi -lz -lm `pkg-config gtk+-2.0 --cflags --libs`

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

progressbar.c:(.text+0x3c): undefined reference to `gtk_builder_new'

progressbar.c:(.text+0x58): undefined reference to `gtk_builder_add_from_file'

progressbar.c:(.text+0xb0): undefined reference to `gtk_builder_get_object'

progressbar.c:(.text+0xd8): undefined reference to `gtk_builder_connect_signals'

collect2: ld returned 1 exit status

make: *** [helloworld] Error 1

このエラーから抜け出すのを手伝ってください。

4

2 に答える 2

0

私の推測では、それpkg-configはまだ古い 2.10 バージョンを指しているということです。また、すべての GCC コマンドライン引数を持っていてpkg-config gtk+-2.0 --cflags --libs 提供している理由もわかりません。それが の仕事のはずですpkg-config

于 2013-02-19T13:09:01.240 に答える
0

がない場合は、代わりGtkBuilderlibgladeが使用されました。GTK+2 と libglade の両方をサポートするグレード バージョンを使用する必要があります ( 3.8 ブランチが条件に適合します)。

新しい GTK+ で directFB バックエンドを使用しようとしないでください。これは Debian インストーラの開発者によって積極的に維持されていましたが、長い間放棄されてきました。

于 2013-02-17T08:44:35.107 に答える