Qt Libs statisch linken
Qt Libs statisch linken
Hi,
weiss jemand wie ich eigene libs in qt statisch dazu linke? Welchen Flag muss ich in dem .pro file setzen. Dynamisch funzt alles nur nicht statisch.
weiss jemand wie ich eigene libs in qt statisch dazu linke? Welchen Flag muss ich in dem .pro file setzen. Dynamisch funzt alles nur nicht statisch.
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Was meinst du denn mit "meinen eigenen Sachen" ? Das ist meistens so, dass man nur seine Programme dagegen linken will!?neosun hat geschrieben:Das ist ja bloed, ich will ja nicht die qt libs statisch linken sondern nur meine eigenen Sachen. Da muss es doch noch was anderes geben.
Eine statische Version ist nichts anderes wie aller Source als Object Daten. Und um nur deine "eigenen Sachen" statisch zu linken brauchst alle Abhänigkeiten statisch.
Ich habe eigene geschriebene Libs und Libs aus dem Institut und ich benutze 3rd-party libs wie vtk (www.vtk.org) die ich statisch zu meinem qt programm linken will, so das ich nur ein binary weitergeben muss und nicht die ganzen libs. Ueblich ist dynamisch zu linken, wo ich aber alle libs mit geben muss, was ich nicht moechte.FlorianBecker hat geschrieben:Was meinst du denn mit "meinen eigenen Sachen" ? Das ist meistens so, dass man nur seine Programme dagegen linken will!?neosun hat geschrieben:Das ist ja bloed, ich will ja nicht die qt libs statisch linken sondern nur meine eigenen Sachen. Da muss es doch noch was anderes geben.
Eine statische Version ist nichts anderes wie aller Source als Object Daten. Und um nur deine "eigenen Sachen" statisch zu linken brauchst alle Abhänigkeiten statisch.
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
natuerlich ist das ein problem, wo bitte gebe ich das im .pro file an.FlorianBecker hat geschrieben:Naja, ist doch aber kein Problem, alles statisch linken fertig.
die libs habe ich mit LIBS = -L/usr/local/lib und -lvtkIO -lvtkRendering usw. angeben, wie weiss jetzt aber qmake das er sie statisch linken soll. Das funzt nicht. Da ja qmake das Makefile generiert.
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Wenn es sowaere wuerde ich nicht fragen. Er macht es naemlich nicht. Ich bekomme eine menge error messages.FlorianBecker hat geschrieben:Mh, du liest schon den gleichen Beitrag, oder?
Um statisch zu linken, müssen die Libs auch statisch vorliegen!!!!! Und wenn diese statisch vorliegen Link er das schon selber. Falls du wissen willst, wie man expliziet gegen die .a Libs linkt:
LIBS += /weg/zu/meiner/lib.a
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Aha, also hast du nicht das Problem des statischen linkens, sondern der statischen Bibliotheken.
Warum kommen Fehler Mitteilungen?
Weil die Libs nicht korrekt auf statisch linken abgestimmt sind.
Weil Sie nicht korrekt statisch gebaut sind.
Also wenn das der Fall ist, dann kannst du es vergessen, denn dann wird statisches linken mit den Libs nicht funktionieren. Die Qt Lib kann statisch gelinkt werden. Aber ich hatte durchaus auch schon Libs, wie mal eine libxml2 Version, die man nicht linken konnte, ich habe es dann gelassen. Vielleicht geht es immernoch nicht. Vielleicht müsste man die auch nur anders bauen, aber ab hier gab es einen Punkt, wo sich das statische linken einfach nicht mehr den Aufwand abgefangen hätte.
Und vielleicht bist du nicht immer so unfreundlich. Ich habe dir schließlich nichts getan.
Warum kommen Fehler Mitteilungen?
Weil die Libs nicht korrekt auf statisch linken abgestimmt sind.
Weil Sie nicht korrekt statisch gebaut sind.
Also wenn das der Fall ist, dann kannst du es vergessen, denn dann wird statisches linken mit den Libs nicht funktionieren. Die Qt Lib kann statisch gelinkt werden. Aber ich hatte durchaus auch schon Libs, wie mal eine libxml2 Version, die man nicht linken konnte, ich habe es dann gelassen. Vielleicht geht es immernoch nicht. Vielleicht müsste man die auch nur anders bauen, aber ab hier gab es einen Punkt, wo sich das statische linken einfach nicht mehr den Aufwand abgefangen hätte.
Und vielleicht bist du nicht immer so unfreundlich. Ich habe dir schließlich nichts getan.
Entschuldige bitte wenn ich so unfreundlich war, war nicht mit Absicht!FlorianBecker hat geschrieben:Aha, also hast du nicht das Problem des statischen linkens, sondern der statischen Bibliotheken.
Warum kommen Fehler Mitteilungen?
Weil die Libs nicht korrekt auf statisch linken abgestimmt sind.
Weil Sie nicht korrekt statisch gebaut sind.
Also wenn das der Fall ist, dann kannst du es vergessen, denn dann wird statisches linken mit den Libs nicht funktionieren. Die Qt Lib kann statisch gelinkt werden. Aber ich hatte durchaus auch schon Libs, wie mal eine libxml2 Version, die man nicht linken konnte, ich habe es dann gelassen. Vielleicht geht es immernoch nicht. Vielleicht müsste man die auch nur anders bauen, aber ab hier gab es einen Punkt, wo sich das statische linken einfach nicht mehr den Aufwand abgefangen hätte.
Und vielleicht bist du nicht immer so unfreundlich. Ich habe dir schließlich nichts getan.
Also die vtk libs die ich benutze werden bei anderen Projekte wo nicht qt drin vorkommt meist mit MFC ohne Probleme statisch gelink, ich habe es heute nochmal mit einer anderen Application getestet. Es liegt irgendwo an Qt.
Wenn ich es auf MacOSX versuche, bekomme ich folgende error message.
ld: 3rd-party/mac/lib/vtk/libvtkCommon.a(vtkMultiThreader.o) illegal reference to symbol: _MPProcessors defined in indirectly referenced dynamic library /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
ld: 3rd-party/mac/lib/vtk/libvtkRendering.a(vtkCarbonRenderWindowInteractor.o) illegal reference to symbol: _CallNextEventHandler defined in indirectly referenced dynamic library /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
ld: 3rd-party/mac/lib/vtk/libvtkRendering.a(vtkCarbonRenderWindow.o) illegal reference to symbol: _GetDeviceList defined in indirectly referenced dynamic library /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
Vielleicht kann ja jemand was damit anfangen.
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Ja kann sein. Ich werde es jetzt dynamisch linken und gut. Sonst wird man ja nie fertig. Trotzdem danke.FlorianBecker hat geschrieben:Mh, also die Fehlermitteilung sagt aber aus, dass der Fehler in der libvtkCommon.a liegt.
Warum geht statisch linken mit anderen Programmen trotzdem?
Weil die anderen statisch gelinkten Programme nicht die in der Fehlermitteilung beschriebenen Funktionen benötigt.