GTK a SUSE 13.1-en

Fórumok

A GTK-t fordítása a SUSE-13.1-en egészen jól índul el, de egyszer csak hiba lép fel.

Valahogy ki tudom a híbát javítani, de sajnos csak probálkozva, úgy hogy valamilyen gtk csomagokat telepítek.

Ha lehetne szeretnék a hibára egy potos leírást adni.

Most egy kis kivonat a log-mkall-ból.

~/ccc3/gtk/codegen ~/ccc3/gtk
CCC Program Builder 1.3.03 Copyright (C) ComFirm Bt.
. dd
PRG2OBJ.BAT _gtkapi dd
Clipper/C++ Compiler 5.0.18 Copyright (C) ComFirm Bt.
Parsing complete.
----------------------------------------------------------------
PRG2OBJ.BAT codedir .
Clipper/C++ Compiler 5.0.18 Copyright (C) ComFirm Bt.
Parsing complete.
----------------------------------------------------------------
PRG2OBJ.BAT codegen_api .
Clipper/C++ Compiler 5.0.18 Copyright (C) ComFirm Bt.
Parsing complete.
----------------------------------------------------------------
PRG2OBJ.BAT codegen_reg .
Clipper/C++ Compiler 5.0.18 Copyright (C) ComFirm Bt.
Parsing complete.
----------------------------------------------------------------

.....
.....
.....
PRG2OBJ.BAT wdg_gladewindow .
Clipper/C++ Compiler 5.0.18 Copyright (C) ComFirm Bt.
Parsing complete.
----------------------------------------------------------------
LEM2OBJ.BAT gtksym_parser .
16 (sr=16/rr=0) parsing conflicts.
pathsearch /home/gyula/ccc3/usr/bin/linux/lempar.c
----------------------------------------------------------------
LEX2OBJ.BAT gtksym_lexer .
----------------------------------------------------------------
OBJ2LIB.BAT ccc3_glade
ar: creating objlin/ccc3_glade.lib
----------------------------------------------------------------
OBJ2SO.BAT libccc3_glade
----------------------------------------------------------------
LIB2EXE.BAT gui /home/gyula/ccc3/usr/bin/linux
----------------------------------------------------------------
/home/gyula/ccc3/usr/lib/lin/ccc3_gtk.lib(gtk_init.obj): In function `_nsp_gtk::_clp_init(int)':
gtk_init.cpp:(.text+0x28): undefined reference to `gtk_init'
/home/gyula/ccc3/usr/lib/lin/ccc3_gtk.lib(gtk_init.obj): In function `_nsp_gtk::_clp_main(int)':
gtk_init.cpp:(.text+0x71): undefined reference to `gtk_main'
/home/gyula/ccc3/usr/lib/lin/ccc3_gtk.lib(gtk_init.obj): In function `_nsp_gtk::_clp_main_quit(int)':
gtk_init.cpp:(.text+0xba): undefined reference to `gtk_main_quit'
/home/gyula/ccc3/usr/lib/lin/ccc3_gtk.lib(gtk_init.obj): In function `_nsp_gtk::_clp_main_depth(int)':
gtk_init.cpp:(.text+0x11f): undefined reference to `g_main_depth'
/home/gyula/ccc3/usr/lib/lin/ccc3_gtk.lib(gtk_init.obj): In function `_nsp_gtk::_clp_events_pending(int)':
gtk_init.cpp:(.text+0x16a): undefined reference to `gtk_events_pending'
.....
.....
/home/gyula/ccc3/usr/lib/lin/ccc3_gtk.lib(gtk_tree_view_column_api.obj): In function `_nsp_gtk::_nsp_tree_view_column::_clp_cell_is_visible(int)':
gtk_tree_view_column_api.cpp:(.text+0x46a6): undefined reference to `gtk_tree_view_column_get_type'
gtk_tree_view_column_api.cpp:(.text+0x46b2): undefined reference to `g_type_check_instance_cast'
gtk_tree_view_column_api.cpp:(.text+0x46ba): undefined reference to `gtk_tree_view_column_cell_is_visible'
collect2: error: ld returned 1 exit status

~/ccc3/gtk
Linux linux-sat8.site 3.11.6-4-desktop #1 SMP PREEMPT Wed Oct 30 18:04:56 UTC 2013 (e6d4a27) i686 i686 i386 GNU/Linux

Hozzászólások

A konkrét hiba, hogy a gui.exe program linkelésekor a linker nem találja a gtk alapfüggvényeit (mint gtk_init, gtk_main stb.), azaz nincs belinkelve a gtk könyvtár. A gtk könyvtárat viszont nem itt kell belinkelni, hanem a libccc3_gtk interfész könyvtárnál. Tehát azt gondolom, hogy már egy előző lépés is rossz lehetett, nevezetesen nem készült el a libccc3_gtk.so.

A CCC-hez gtk2 kell (nem gtk3). Amikor az interfész készült, még nem volt gtk3, csak 2. A gtk-ról tudni kell, hogy elég gyakran változtatják az API-ját. Nekem nincs időm a változó API követésére, ezért a gtk interfész karbantartása arra korlátozódik, hogy kihagyom azokat a részeket, amik egy újabb változatban nem fordulnak. Ez csak akkor fog megváltozni, ha valaki más kézbe veszi az ügyet.

A gtk iszonyú sok alkatrészt használ (rengeteg könyvtár, rengeteg include fájl, lásd lejjebb), és ezek a különféle linuxokon és azok különböző változatain mindig máshol vannak elhelyezve (bár az mostani ubuntukon ez leülepedett). Ezért a gtk interfész lefordítása nem egyszerű: Meg kell keresni, hogy melyik alkatrész hol van, és annak megfelelő build paraméterfájlt kell írni. Ez látszik a ccc3/gtk/code_byhand/gtk-*.bld fájlokban. Ezek között lehet keresgélni megfelelőt, vagy újat kell készíteni a konkrét szituációnak megfelelően.

Ha a saját ubuntu precise gépemen begépelem


	ldd libccc3_gtk.so

ezt kapom


	linux-vdso.so.1 =>  (0x00007fff39cce000)
	libgtk-x11-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 (0x00007ff1abd9e000)
	libgdk-x11-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 (0x00007ff1abaeb000)
	libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007ff1ab8cb000)
	libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007ff1ab67c000)
	libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007ff1ab432000)
	libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007ff1ab13d000)
	libccc3.so => /opt/ccc3/usr/lib/lin/libccc3.so (0x00007ff1aaeae000)
	libccc3_ui_.so => /opt/ccc3/usr/lib/lin/libccc3_ui_.so (0x00007ff1aac9c000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff1aa99c000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff1aa786000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff1aa3c5000)
	libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007ff1aa1b9000)
	libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007ff1a9e84000)
	libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007ff1a9c7d000)
	libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007ff1a9a5b000)
	libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007ff1a979d000)
	libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007ff1a944d000)
	libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007ff1a9223000)
	libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007ff1a8fed000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff1a8cf0000)
	libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007ff1a8adf000)
	libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007ff1a88d5000)
	libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007ff1a86d1000)
	libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007ff1a84c1000)
	libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007ff1a82b9000)
	libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007ff1a80ae000)
	libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007ff1a7eab000)
	libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007ff1a7ca8000)
	libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007ff1a7aa3000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff1a7886000)
	libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007ff1a767d000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ff1a7440000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff1a7238000)
	/lib64/ld-linux-x86-64.so.2 (0x00007ff1ac7d0000)
	libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007ff1a6f9b000)
	libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007ff1a6d7d000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff1a6b78000)
	libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007ff1a68e1000)
	libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007ff1a66b9000)
	libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007ff1a64b5000)
	libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007ff1a62ab000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff1a6094000)
	libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007ff1a5e74000)
	libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007ff1a5c58000)
	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007ff1a5a2e000)
	libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007ff1a582a000)
	libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007ff1a5624000)

Először ezt (valami hasonlót) kellene reprodukálnod.
--
ulysses.co.hu