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
ezt kapom
Először ezt (valami hasonlót) kellene reprodukálnod.
--
ulysses.co.hu
Nagyon szépen köszönöm a välaszt.
A gt2-devel és a libSDL-Pango-devel csomagokat telepiitettem.
Sajnos az ubuntu alatt több problémäm volt.