Qt

Ich habe es geschafft, QT 4.5.3. statisch zu
kompilieren (unter Suse Linux 11.1), nachdem ich die
fehlenden *.a-Dateien (devel-packages) nachinstalliert
habe.

Danach habe ich die *.o-Dateien meiner Anwendung
gelöscht und meine executable Anwendung neu kompiliert.

Ergebnis:

  1. die Anwendung ist jetzt 1 MB gross statt 166 KB
  2. die QT-Libraries sind aber leider immer noch nicht
    statisch in der Anwendung, sondern werden dynamisch
    gesucht (der Befehl ‚ldd‘ bestätigt dies), obwohl
    ich den ‚CONFIG += static‘ Eintrag in meiner
    .pro-Datei gesetzt habe!
  3. warum werden die libs nicht in meine Anwendung
    gelinkt? Hast Du eine Idee?

q1: wurde qt-devel o.ä. installiert?

q2: Stand in den -devel packages irgendwas von „static“? Ich würde fast annehmen, das das Ergebnis von „statisches qt“ und „shared GLU“ zwar teilweise statisch aber immer noch nur auf einer distribution lauffähig ist.

q3: was sagt % find /usr -name libqt*.a -ls ?
(finden sich dort noch Dateien die von _vor_ Deiner „installation from scratch“ herrührten?)

q4: ich lese nur „kompilieren“ und nicht „installieren“…

Zu den geschilderten Beobachtungen:

1./2. _Irgendwas_ muss nun im Gegensatz zu früher statisch eingebunden werden…
Das was musst Du selbst wissen.

  1. siehe q3.

VGBN

…geschafft…
ich musste noch ein paar zusätzliche Einträge setzen,
damit das statische Linken wirklich erfolgt:

  1. in die .pro-Datei mehrere QTPLUGIN-Einträge
  2. in main.cpp mehrere Q_IMPORT_PLUGIN-Einträge
  3. ‚make clean‘ muss vor Neu-Erstellung aufgerufen
    werden

Jetzt habe ich eine 31 MB grosse executable, die von
keiner QT-Library mehr abhängig ist!
Danke!

Zwar habe ich die executable Datei unter Suse Linux
11.1 kompiliert, läuft überraschenderweise auch unter
Suse Linux 10.1.
Trotzdem habe ich Bedenken, dass das Kompilat unter
Ubuntu, Debian bzw. unter gnome evtl. nicht
funktionieren könnte, wenn bestimmte standard libs in
einer älteren als Version vorliegen, als die zur
Kompilierungszeit auf meinem Suse 11.1 gefundenen!?

Hast Du damit Erfahrung, inwieweit QT-Kompilate linux-
übergreifend funktionieren???

Gruss
Ilona

…geschafft…

Gratuliere!

[…]

Zwar habe ich die executable Datei unter Suse Linux
11.1 kompiliert, läuft überraschenderweise auch unter
Suse Linux 10.1.

Naja, wenn es komplett statisch ist, sollte das auch tun (einzig bei der Kernelversion dürfte es dann noch irgendwann scheitern können)

Trotzdem habe ich Bedenken, dass das Kompilat unter
Ubuntu, Debian bzw. unter gnome evtl. nicht
funktionieren könnte, wenn bestimmte standard libs in
einer älteren als Version vorliegen, als die zur
Kompilierungszeit auf meinem Suse 11.1 gefundenen!?

Wenns komplett statisch ist, müssten auch die eingelinkt sein …

Hast Du damit Erfahrung, inwieweit QT-Kompilate linux-
übergreifend funktionieren???

Nö, sorry …
(Auch keine Non-Qt-Kompilate)

VlG BN

ich möchte eine kleine QT-Anwendung unter Suse Linux 10.3
statisch kompilieren.

Hallo Ilona, deine Anfrage ist schon lange her.
Mich wuerde aber interessieren, hast du es loesen koennen ?
Und wenn ja, wie ?
Lag es daran, dass die Open Source Variante von Qt
diese Art der Komilierung nicht unterstuetzt oder
war es etwas anderes ?

Gruss,
Z.

Hallo,

ja, ich habe das Problem lösen können,
indem ich statt Suse Linux 10.3
die Suse-Version 11.1 verwendet habe
(das Kompilat läuft aber trotzdem auch unter älteren
Suse-Versionen).

Gruss
Ilona