Qt és qwt fordítása

Fórumok

Sziasztok.

A Qt-t és a qwt-t szeretném oly módon fordítani, hogy nagyon kicsi mérete legyen, sok-sok esetleges sllangok (beállítópanelek stb) nem kellenének belé.
Szerintetek lehetséges azt a hatalmas szörnyet egészen kicsire összebarkácsolni? ha igen, melyik forrást érdemes megmatatni?

Eddig csak a kedves kis libQT*.so fájlokkal volt dolgom, azok verziólinkelgetéseivel, meg hasonlókkal. Nagyobb mélységeiben nem ismerem a Qt-t, csak annyit tudok, hogy dícsérik és jajdeszép.

De miért ilyen bazinagy?

Szóval foglalkozott már valaki Qt-minimalizálással?

Hozzászólások

Ez a gond a Trollok között is felmerült, és a megoldás az lett, hogy szétszabdalják a mostani hatalmas csomagot, illetve így a készülő megosztott könyvtárakat is.

Ez egy hatalmas munka, rengeteg forrásátrendezéssel, ezért a négyes sorozatban erre már biztos nem fog sor kerülni.

Nem tudom, hogy a programod mennyire bonyolult, azaz mekkora eséllyel futsz bele a keretrendszerben leledző hibákba, de ha nagyon fontos, hogy kis méretű .so fájlokat tégy mellé, akkor érdemes megpróbálnod az 5-ös Qt-t.

--
The Elder Scrolls V: Skyrim

Nem bírom megjegyezni, de kijön.

A googleearth is Qt alapú, de a kicsike beleforgatott önmagába némi Qt-formájú .so fájlt.
Ha ezeket symlinkelem a rendszerbe telepített qt-fájlokra, a googleeart aszongya' nem indul. Rendeben, biztos valami köztes verzió...

Szóval az ember kicsinyíteni akar, de csak ritkán tud.

g.eart esetén ezekről beszéltem:

root[free]# ls -lh libQtCore.so.4 libQtGui.so.4 libQtNetwork.so.4 libQtWebKit.so.4
-rwxr-xr-x 1 root root 3,0M ápr 14 10:12 libQtCore.so.4
-rwxr-xr-x 1 root root 11M ápr 14 10:12 libQtGui.so.4
-rwxr-xr-x 1 root root 1,2M ápr 14 10:12 libQtNetwork.so.4
-rwxr-xr-x 1 root root 16M ápr 14 10:12 libQtWebKit.so.4
root[free]#

Ugyanezeket nálam más prg is eszi.

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Wáhh. Régen mikor beágyazott vasra hegesztettem Qt-val szembe jött velem egy olyan opció amivel ki lehetett hajigálni felesleges classokat a pörgetéskor. Elővettem a googlet és egyszerűen nem találtam még utalást sem rá. Már kezdtem azt érezni, hogy csak álmodtam, aztán beugrott, hogy a forrás közt megvan hozzá a konfigurálós progi.

És igen:
http://doc.qt.nokia.com/4.7-snapshot/fine-tuning-features.html

Qwt-nél meg szerintem simán kikommentelgeted a pro fájlból a nem szükséges pri fájlokat.

A qwt egyelőre fordulni sem akar, a qt-re meg most néztem rá, melyiket is fordítsam, honnan is. Az még egy sötét területem, félek, mint Yodától a sötét erők.
Marad ez a jövő hét zenéje, ma macskát idomítok...

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Nos, belevágtam magam, hogy a qt alaposabb megismerée érdekében fordítsak egyet.
Mára már befontam a hajamat rezgő fejjel.

Leszedegettem a qt honlapjáról egy forráscsomagot, ami nem más, mint a 4.8.1-es verzió. Elkezdtem configure után a leírtak szerint a fordítást, majd 4 óra múlva ez lepett meg:

In file included from /mnt/sdc1/kernel/usr/include/glib-2.0/glib/gasyncqueue.h:34:0,
from /mnt/sdc1/kernel/usr/include/glib-2.0/glib.h:34,
from /mnt/sdc1/kernel/usr/include/glib-2.0/gobject/gbinding.h:30,
from /mnt/sdc1/kernel/usr/include/glib-2.0/glib-object.h:25,
from /mnt/sdc1/kernel/usr/include/glib-2.0/gio/gioenums.h:30,
from /mnt/sdc1/kernel/usr/include/glib-2.0/gio/giotypes.h:30,
from /mnt/sdc1/kernel/usr/include/glib-2.0/gio/gio.h:28,
from wtf/gobject/GOwnPtr.cpp:24:
/mnt/sdc1/kernel/usr/include/glib-2.0/glib/gthread.h:51:16: error: ‘union’ tag used in naming ‘struct _GMutex’
/mnt/sdc1/kernel/usr/include/glib-2.0/glib/gthread.h:58:7: error: ‘union’ tag used in naming ‘struct _GMutex’
gmake[2]: *** [.obj/release-static/GOwnPtr.o] Error 1
gmake[2]: Leaving directory `/mnt/sdc1/kernel/usr/src/qt-everywhere-opensource-src-4.8.2/src/3rdparty/webkit/Source/JavaScriptCore'
gmake[1]: *** [sub-JavaScriptCore-JavaScriptCore-pro-make_default-ordered] Error 2
gmake[1]: Leaving directory `/mnt/sdc1/kernel/usr/src/qt-everywhere-opensource-src-4.8.2/src/3rdparty/webkit/Source'
gmake: *** [sub-webkit-make_default-ordered] Error 2

root[qt-everywhere-opensource-src-4.8.2]#

Rendben. Kereső, majd a hibaüzenetre találtam egy szép megoldást, ami a glib-bel alakít valamit. A teljes forráscsomag mérete ugyanakkora, majdnem 1GB. Ez lefordult két nap alatt (kisebb megszakításokkal), majd döbbenten tapasztaltam, hogy sejtésem valós: ez a qt fejlesztői környezet egésze.

Persze nem ezt akartam, hanem csupán a qt4.8.1-et fejlesztői eszközök nélkül.

További merengésem a qt honlapján folytatódik, amely a "mit is töltögessek ahhoz, hogy nekem jó legyen" monológ jegyében fog zajlani.

Külön érdekesség, hogy a Quantim GIS térinformatikai rendszer 1.8-as verzióját szeretném lefordítani, és az ő configure-e 4.8-as qt-t érzékel, holott nem az van a rendszeremen. A fordítása persze leáll, mert a qt-kavarodásaim már túl sokat jelentenek neki. Ameddig a qt-met nem oldom meg, ez sem fog megoldódni...

Meleg van.

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Azt hiszem sikerül a dolog, mármint a qgis terén, ez volt a kiváltója a qt-forgatási mániának.

http://comments.gmane.org/gmane.comp.gis.qgis.devel/14519
Szóval másnak is van problémája.

Rendben, a qt-t most már végigjárom, azt is megcsinálom, ha már belefogtam...

A "kihagyatást" így gondoltad?
./configure -no-webkit

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Én ezeket szoktam kihagyni:

-no-audio-backend
-no-declarative
-no-multimedia
-no-openssl
-no-phonon
-no-phonon-backend
-no-qt3support
-no-script
-no-scripttools
-no-webkit
-no-xmlpatterns
-nomake demos
-nomake docs
-nomake examples
-nomake translations

Érdemes még a debug verziókat is tiltani egy -release kapcsolóval.

-opensource
-confirm-license
-developer-build

Kotelezo elemek. Az elsovel a licenszt valasztod ki, a masodikkal elfogadod, a harmadikkal pedig csak annyit mondasz, hogy azt szeretned, ha az aktiv konyvtar lenne a $PREFIX.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Sajnos kiderült egy sikeres fordítás és install után, hogy 3 qt-file hiányzik, köll a webkit valamihez...

Így fest a jelenlegi fordítóscriptem:

root[1]# cat qt-forditas.sh
./configure -no-audio-backend \
-no-declarative\
-no-multimedia\
-no-openssl\
-no-phonon\
-no-phonon-backend\
-no-qt3support\
-no-scripttools\
-nomake demos\
-nomake docs\
-nomake examples\
-nomake translations
# -no-script\
# -no-webkit\
# -no-xmlpatterns\

echo -----------------------------------------
echo "configure ok"
echo gmake indítható?
read whatafck
gmake

exit 0

# szóval a legminimálisabbat akartam, de még ha azt a hármat kiszedem, a fejlesztői örnyezet hatalmas GUI-készítője is ott van a binárisok között, az meg nekem nem kellene..

Quantum GIS megoldva:

1.
probléma kibeszélése:
http://osgeo-org.1560.n6.nabble.com/SpatialIndex-error-on-qgis-server-c…

2.
tialindex-dev levadászása:
http://pkgs.org/ubuntu-12.04/ubuntu-universe-i386/libspatialindex-dev_1…

3.
cmake .. lefuttatása szinte hibátlanul:

...

-- Found PyQt4 version: 4.8.1
-- Found GSL: -L/usr/lib -lgsl -lgslcblas -lm
-- txt2tags not found - disabled
-- Ctest Binary Directory set to: /usr/src/qgis-1.8/Quantum-GIS/cmake/output/bin
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/src/qgis-1.8/Quantum-GIS/cmake

root[qgis-1.8]#

és már fut is a make package!

:-)

---
--- A gond akkor van, ha látszólag minden működik. ---
---

+1 miklosnak. Semmi ertelmet nem latom a lekicsinyitesnek. Egyedul a Qt5-t ajanlanam, ahogy korabban felmerult, de ez minden ...

3 órán keressztül fordult a qt, de sjnos leállt a gmake ezzel a hibaüzenettel:

...

ln -s libQtScript.so.4.8.2 libQtScript.so
ln -s libQtScript.so.4.8.2 libQtScript.so.4
ln -s libQtScript.so.4.8.2 libQtScript.so.4.8
rm -f ../../lib/libQtScript.so.4.8.2
rm -f ../../lib/libQtScript.so
rm -f ../../lib/libQtScript.so.4
rm -f ../../lib/libQtScript.so.4.8
mv -f libQtScript.so.4.8.2 libQtScript.so libQtScript.so.4 libQtScript.so.4.8 ../../lib/
gmake[1]: Leaving directory `/mnt/sdc1/kernel/usr/src/qt-1.8.2/refs/changes/69/25069/1/src/script'
cd src/3rdparty/webkit/Source/ && gmake -f Makefile.WebKit
gmake[1]: Entering directory `/mnt/sdc1/kernel/usr/src/qt-1.8.2/refs/changes/69/25069/1/src/3rdparty/webkit/Source'
/mnt/sdc1/kernel/usr/src/glib-peccs/refs/changes/69/25069/1/bin/qmake -spec ../../../../mkspecs/linux-g++ -o Makefile.WebKit WebKit.pro
gmake[1]: /mnt/sdc1/kernel/usr/src/glib-peccs/refs/changes/69/25069/1/bin/qmake: Command not found
gmake[1]: *** [Makefile.WebKit] Error 127
gmake[1]: Leaving directory `/mnt/sdc1/kernel/usr/src/qt-1.8.2/refs/changes/69/25069/1/src/3rdparty/webkit/Source'
gmake: *** [sub-webkit-make_default-ordered] Error 2

root[1]#

Nem értem, miért.

------------
a make install ezután ugyan elindult, de szintén hibaüzenettel leállt. Megnéztem az eredményt, trolltech könyvtár létre lett hozva. Átalakítottam a rámutató symlikeket, egy korábbi qwt-t is installpkg-ztam, a qt és qwt-igényű programom el is indult (zyGrib meteporológiai cucc)
a qlandkarte viszont nem indul webkit nélkül..

Holnap make uninstallok jönnek, majd forráskódtakarítás és mindent elölről kezdek, nem tudom, mi történt.

Eddig minden hasonló méretű trollokat (java, python stb.) kiismertem, most ez jönne, hát szép nagy falat.

Kérdések, milyen környezetben próbálod ezt fordítani? A webkit nem mindenen fordul le, pl Solarison tökre nem fog működni.

Egyáltalán használod-e a webkitet? Ez nagyrészt complex web tartalom megjelenítésére jó, pl böngésző fejlesztéshez. Ha nem, akkor a configure-ba érdemes bedobni a '-no-webkit' kapcsolót. De ezt már feljebb is írták.

A harmadik, mit jelent a topik indítóban, hogy lecsökkenteni a Qt méretét? A Qt akkora amekkora, a feljebb írt configure kapcsolókkal hatékonyan kihagyhatsz belőle részeket. Ha egy adott program mellé nem akarod mellékelni az egész Qt környezetet, akkor pedig van egy halom lehetőséged, pl csak a szükséges libek mellé csomagolása vagy a statikus fordítás. Egyéb irányú erőfeszítésnek szerintem nincs értelme.

Környezet:
slackware13.37 (nem cserélem le...)

root[usr]# uname -a
Linux darkstar 3.4.4-zombie #1 PREEMPT Sat Jun 23 17:11:56 CEST 2012 i686 Intel(R) Celeron(R) M processor 900MHz GenuineIntel GNU/Linux

webkitet egyetlen prg igényli: qlandkarte:

libQtGui.so.4
libQtCore.so.4
libQtNetwork.so.4
libQtXml.so.4
libQtSql.so.4
libQtDBus.so.4
libQtWebKit.so.4 <----ez az.
libQtXmlPatterns.so.4
libQtOpenGL.so.4

A stellarium qt-igénye:

libQtOpenGL.so.4
libQtScript.so.4

Qt méretének lecsökkentése alatt azt értettem, hogy ha ezen fenti fájlok és a hozzájuk csatlakozó nélkülözhetetlenek megvannak, a többi számomra lényegtelen, nem vagyok Qt-fejlesztő, a dialog nekem bőven elég parancssorban...

Így ennyi, azt hiszem mindenre válaszoltam.

---
--- A gond akkor van, ha látszólag minden működik. ---
---

OK, bocs hogy túráztattalak :)

Visszatérve a fordítása hibára, elég különös. Ha jól értem arról beszél, hogy nem találja a qmake parancsot, amit pedig egy korábbi fordítási fázisban elvileg a Qt már elkészített. Ez elég rejtélyes. Megpróbálhatod megkeresni, hol van a már elkészült qmake bináris és azt a PATH-be befoglalni, és újra nekiereszteni a make-et.

Ez valami mountolt partíción van? Van azon a meghajtón exec jog? Mert a qmake-hez az kelleni fog szerintem... ez még lehet egy izgalmas hiba :)

Elég bátor dolog egy celeron900-on fordítani :) Régen sokszor raktam forrásból Slackware-re, és nem volt ilyen gond, igaz az jó pár verzióval korábban volt. A gyári qt csomag egyébként nem jó? Abból is összevadászhatod, hogy mi kell a progidnak és utánna kukázhatod...

Egyebkent a /mnt/sdc1/kernel/usr/src/glib-peccs/refs/changes/69/25069/1/bin/qmake helyen tenyleg letezik egy qmake nevu, futtathato fajl? Mert ha nem, akkor ez lehet a baj.

Probald meg a -developer-build -ot, az szinte mindig lefordul. Semmi extrat nem csinal, mint hogy nem lesz szukseged a make install-ra, mivel a forras konyvtara lesz a prefixed.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Mai napi próbám a hivatalos qt honlapjáról történő letöltés után ez:

configure a tiltásokkal együtt ok, majd gmake végkimenete:

In file included from /mnt/sdc1/kernel/usr/include/glib-2.0/glib/gasyncqueue.h:34:0,
from /mnt/sdc1/kernel/usr/include/glib-2.0/glib.h:34,
from /mnt/sdc1/kernel/usr/include/glib-2.0/gobject/gbinding.h:30,
from /mnt/sdc1/kernel/usr/include/glib-2.0/glib-object.h:25,
from /mnt/sdc1/kernel/usr/include/glib-2.0/gio/gioenums.h:30,
from /mnt/sdc1/kernel/usr/include/glib-2.0/gio/giotypes.h:30,
from /mnt/sdc1/kernel/usr/include/glib-2.0/gio/gio.h:28,
from wtf/gobject/GOwnPtr.cpp:24:
/mnt/sdc1/kernel/usr/include/glib-2.0/glib/gthread.h:51:16: error: ‘union’ tag used in naming ‘struct _GMutex’
/mnt/sdc1/kernel/usr/include/glib-2.0/glib/gthread.h:58:7: error: ‘union’ tag used in naming ‘struct _GMutex’
gmake[2]: *** [.obj/release-static/GOwnPtr.o] Error 1
gmake[2]: Leaving directory `/mnt/sdc1/kernel/usr/src/qt-everywhere-opensource-src-4.8.2/src/3rdparty/webkit/Source/JavaScriptCore'
gmake[1]: *** [sub-JavaScriptCore-JavaScriptCore-pro-make_default-ordered] Error 2
gmake[1]: Leaving directory `/mnt/sdc1/kernel/usr/src/qt-everywhere-opensource-src-4.8.2/src/3rdparty/webkit/Source'
gmake: *** [sub-webkit-make_default-ordered] Error 2

root[qt-everywhere-opensource-src-4.8.2]#

....................

Szóval az eredményem ugyanaz, amit itt is leírtam fentebb: http://hup.hu/node/114461#comment-1479927
Folytatom tehát a másik, esetlegesen javított, de nemhivatalos oldalon taglalt qtfordítással...
Persze a már szintén fentebb megadott configure-beállításokkal...

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Nem tudom, mi történt.

A fenti hiba után másnap (ma) elindítám a make installt, az is hibaüzenetet generált, de a Trolltech könvtárszerkezete felcsúszott a local-ba.
Webkit nincs.
Bemásoltam galád módon a 4.7-es qt-ből, erre elindul minden. Felraktam a qwt-t, az is megy, mellékesen a qwt beleinstallálódik a qt könyvtárába.

Annyit észrevettem, hogy a gmake sem fordult belé, ezt is a 4.7-ből másoltam át. Egyes programok (QGis) igénylik ezt.

A végső könnyvtárméret mesés lett.
23.5 MB, és ezen squashfs állomány bemountolva pontosan 60MB.
Ha minden prg elindul, az összméret kicsi, de a fordítás randa menetű, akkor miért izgasson a randaság?

(pedig izgat...)

-----------
root[local]#
root[sqsh]# ls -l /mnt/sqsh/usr-local-Trolltech.sqsh
-rw-r--r-- 1 root root 24154112 júl 9 18:42 /mnt/sqsh/usr-local-Trolltech.sqsh

root[sqsh]#
root[local]# du -sh /usr/local/Trolltech
60M /usr/local/Trolltech

root[local]#

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Bár már nem a qt és qwt témába vág a dolog, hanem csak érintőlegesen.

a QGis 1.8-as evrziójának fordítása így kapott defektet:

root[cmake]# cmake ..
-- Quantum GIS version: 1.9.0 Master (10900)
-- Could not find GRASS
-- Found Proj: /usr/local/lib/libproj.so
-- Found GEOS: /usr/lib/libgeos_c.so
-- Found GDAL: /usr/lib/libgdal.so (1.8.0)
-- Found Expat: /usr/lib/libexpat.so
-- Found Spatialindex: /usr/lib/libspatialindex.so
-- Found Qwt: /usr/lib/libqwt.so (6.0.1)
-- Found Sqlite3: /usr/src/qgis-1.8/Quantum-GIS/cmake/qgis1.8/lib/libsqlite3.so
-- Found PostgreSQL: /usr/lib/libpq.so
-- Touch support disabled
-- Pedantic compiler settings enabled
-- Found Python executable: /usr/bin/python2.6
-- Found Python version: 2.6.6
-- Found Python library: /usr/bin/python2
-- Found SIP version: 4.11.2
-- Found PyQt4 version: 4.8.1
-- Found GSL: -L/usr/lib -lgsl -lgslcblas -lm
-- txt2tags not found - disabled
-- Ctest Binary Directory set to: /usr/src/qgis-1.8/Quantum-GIS/cmake/output/bin
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/src/qgis-1.8/Quantum-GIS/cmake

root[cmake]# gmake
[ 0%] Built target version
[ 0%] Building CXX object src/core/CMakeFiles/qgis_core.dir/gps/qextserialport/qextserialport.cpp.o
In file included from /usr/lib/qt/include/QtCore/QIODevice:1:0,
from /usr/src/qgis-1.8/Quantum-GIS/src/core/gps/qextserialport/qextserialport.h:121,
from /usr/src/qgis-1.8/Quantum-GIS/src/core/gps/qextserialport/qextserialport.cpp:4:
/usr/lib/qt/include/QtCore/qiodevice.h:1:44: fatal error: ../../src/corelib/io/qiodevice.h: No such file or directory
compilation terminated.
gmake[2]: *** [src/core/CMakeFiles/qgis_core.dir/gps/qextserialport/qextserialport.cpp.o] Error 1
gmake[1]: *** [src/core/CMakeFiles/qgis_core.dir/all] Error 2
gmake: *** [all] Error 2
root[cmake]#

........
mellékesen a /usr/lib/qt/ symlinkelvve van a Trolltech qt könyvtárára...

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Igen.
Csak attól kaptam fejlövést tegnap, hogy ezt a cmake nem vette észre.
Az már más kérdés, hogy most meg nem találok ilyesmit csomagban se..
Az egy verziószámmal ezelőtti QGis simán lefordul, az semmit se hiányol.

De még kutatok...
Találtam is valami rémet:
http://www.vision.ee.ethz.ch/computing/sepp-irix/qt-3.0-mo/qiodevice-h…
...bár ez valami korábbi verzió.

Egyébként meg fent van a rendszeren ez a rücsök:

root[QtCore]# ls -lh /usr/include/QtCore/qiodevice.h
-rw-r--r-- 1 killer 1001 44 ápr 26 21:45 /usr/include/QtCore/qiodevice.h

root[QtCore]#

... csak nem értem, miért nem leli.a qmake

---
--- A gond akkor van, ha látszólag minden működik. ---
---