[GTK+/DirectFB-pxa320pro]테스트프로그램이 Aborted 발생하는 현상
target board : pxa320-pro
kernel version : 2.6.24
library list : atk-1.19.3, cairo-1.4.10, DirectFB-1.0.1, fontconfig-2.4.2, freetype-2.3.5, glib-2.12.13, gtk+-2.10.14, jpeg-6b, libpng-1.2.19, libxml2-2.6.29, pango-1.16.4, zlib-1.2.3
현재 target board에 gtk+ directfb를 사용하기 위해 아래 사이트 내용을 참조하여 컴파일 완료하였으며, 샘플코드 테스중에 있습니다.
URL : http://www.directfb.org/wiki/index.php/Projects:GTK_on_DirectFB_for_Embedded_Systems
하지만 제가 제작한 helloworld 파일이 실행과 동시에 LCD화면만 한번 깜박거리고 "Aborted"발생하면서 바로 죽어 버립니다. 자세한 프로그램 로그는 아래와 같습니다.
=======================| DirectFB 1.0.1 |=======================
(c) 2001-2007 The DirectFB Organization (directfb.org)
(c) 2000-2004 Convergence (integrated media) GmbH
------------------------------------------------------------
(*) DirectFB/Core: Single Application Core. (2008-04-25 17:15)
(*) Direct/Thread: Running 'VT Switcher' (CRITICAL, 805)...
(*) Direct/Thread: Running 'Keyboard Input' (INPUT, 807)...
(*) DirectFB/Input: Keyboard 0.9 (directfb.org)
(!) Direct/Modules: Could not open module directory `/opt/gtkdfb/usr/local/lib/directfb-1.0-0-pure/gfxdrivers'!
--> No such file or directory
(*) DirectFB/Graphics: Generic Software Rasterizer 0.6 (directfb.org)
(*) DirectFB/Core/WM: Default 0.3 (directfb.org)
(!) DirectFB/FBDev: Panning display failed (x=0 y=0 ywrap=0 vbl=0)!
--> Invalid argument
(*) Direct/Thread: Running 'EventBufferFeed' (MESSAGING, 808)...
(!) [ 803: 0.000] --> Caught signal 6 (unknown origin) <--
(!!!) *** WARNING [still objects in 'Layer Region Pool'] *** [object.c:231 in fusion_object_pool_destroy()]
(!!!) *** WARNING [still objects in 'Layer Context Pool'] *** [object.c:231 in fusion_object_pool_destroy()]
(!!!) *** WARNING [setting window->stack = NULL] *** [default.c:2805 in wm_close_stack()]
(!!!) *** WARNING [still objects in 'Window Pool'] *** [object.c:231 in fusion_object_pool_destroy()]
(!!!) *** WARNING [still objects in 'Surface Pool'] *** [object.c:231 in fusion_object_pool_destroy()]
Aborted
소스 내용은 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 를 이용하여 window를 생성하고, 그곳에 button = gtk_button_new_with_label("Hello World"); 를 추가하는 프로그램입니다.
"Aborted"가 발생하는 위치를 확인 해보니, gtk_widget_show(button); 구문이라는 것을 확인 하였습니다.
gtk_widget_show(button); 를 제외할 경우 아무 이상없이 아무것도 없는 window가 출력되고 있습니다.
혹시 button 값이 NULL 인가 싶어 확인 해보니 정상적으로 생성되고 있었습니다.
board setting이 잘못된 것인지, library 제작이 잘못된 것인지 알수가 없어 막막한 사항입니다.(7일째 작업중ㅜㅜ)
언제 이문제가 해결될지.. 코피터질 직전입니다.
아래는 테스트 코드입니다.
{
GtkWidget *window;
GtkWidget *button;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello Buttons!");
gtk_window_set_default_size(GTK_WINDOW(window), 240,320);
g_signal_connect (G_OBJECT (window), "delete_event",
G_CALLBACK (delete_event), NULL);
button = gtk_button_new_with_label ("Hello World");
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (hello), NULL);
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show(button); //Aborted가 발생하는 위치
gtk_widget_show(window);
gtk_main ();
}
참고로 컴파일시 적용한 옵션은 아래와 같습니다.
[DirectFB]
./configure --host=$HOST --build=$BUILD --prefix=$PREFIX \
--enable-debug-support=no --enable-fbdev=yes --enable-zlib=yes --enable-video4linux2=yes --enable-x11=no --enable-sdl=no --with-gfxdrivers=none LDFLAGS="-L$PREFIX/lib -ljpeg" CPPFLAGS="-I$PREFIX/include"
[GTK+]
./configure --host=$HOST --build=$BUILD --prefix=$PREFIX --with-gdktarget=directfb --without-libtiff --disable-glibtest --disable-largefile --disable-modules --with-included-loaders=jpeg,gif,png,xpm LDFLAGS="-L$PREFIX/lib -ljpeg" CPPFLAGS="-I$PREFIX/include"
SIGABRT 가 어디서, 왜
SIGABRT 가 어디서, 왜 날아가는지 알아보는 것부터 시작해보세요.
OTL
저의 무지로 인해 추가 질문드립니다.
제가 linux 환경에서의 개발 경험부족으로 인해 문제 해결부분에서 부족한 점이 많아 계속 질문드려 죄송합니다.
말씀하신 SIGABRT 즉 시그널 신호를 확인하라는 말씀 같은데, 정확히 어떻게 체크해야한다는 말씀이신지요.
지금 여기저기를 통해 검색중에 있긴 있는데, 다시 한번 자세한 설명 부탁드립니다.
댓글 달기