2009-08-05 2 views
1

Ich habe einige Qt-Code namens "GUI". Über Qt Creator kann ich es (ohne GCC) unter Windows kompilieren. Allerdings, wenn ich versuche, es zu kompilieren unter Linux (wieder GCC über Qt Creator), erhalte ich einen Linker-Fehler:Qt Cross-Plattform-Problem: Kompiliert unter Windows, Linker-Fehler unter Linux

collect2: ld returned 1 exit status.

Die einzige nicht-Qt-Bibliothek, die ich verwende die Vektor Bibliothek STL ist.

+1

Können Sie den vollständigen Linker-Fehler posten, damit wir sehen können, was das Problem ist? – Amok

+1

Können Sie die vollständige Fehlermeldung anzeigen? Die 4-5 Zeilen über dem ld ergaben 1 Zeile. – OneOfOne

+4

Wenn Sie keinen Linux-Computer haben, greifen Sie ein VM-Image von einem. VMWare sollte über einige Linux-basierte VM-Appliances verfügen, die Sie zum Testen anpassen können. Ein Kollege von mir hat das schon ein paar Mal gemacht. – Herms

Antwort

0

Normalerweise gibt es drei Bereiche, in denen diese bricht:

  • Überprüfen Sie Ihre Qt Projektdatei, und sehen, ob Sie LIBS += library/path/etc
  • Sie hinzufügen müssen nicht über die Bibliothek
  • installiert Wenn es installiert, ändern Sie Ihre LD_LIBRARY_PATH=/missing/lib/path:$LD_LIBRARY_PATH ./binary im laufenden Betrieb
0

Stellen Sie sicher, dass Ihre Qt-Umgebung eingerichtet ist und dass Sie alle Bibliothek/Paketabhängigkeiten haben.

Dann führen Sie qmake und dann make. Wenn qmake läuft, sollte es dir gut gehen.

Bei einigen Linux-Distributionen müssen Sie die Bibliotheken (Pakete) speziell installieren. Einige Pakete ermöglichen es Ihnen, das Programm auszuführen, zum Beispiel MySQL-Plugins. Wenn Sie kompilieren möchten, benötigen Sie auch die Entwicklungspakete.

Zum Beispiel in Ubuntu Sie vielleicht laufen müssen:

sudo apt-get install build-essential 
sudo apt-get install libqt4-sql-mysql 
0

Der Fehler: "collect2: ld returned 1 Exit-Status" wird in der Regel zurückgegeben, wenn der moc läuft nicht auf Dateien, die es laufen soll an [insbesondere alle Dateien, die ein Q_OBJECT definieren]. Überprüfen Sie, ob Ihr Moc ordnungsgemäß funktioniert.

In Qt Creator gibt es auch eine Registerkarte "Build-Informationen". Gehen Sie darüber und suchen Sie nach weiteren Informationen zu diesem Fehler.

1

Die angegebene Fehlermeldung bedeutet einfach, dass beim Versuch, alle Ihre Objektdateien zu einer ausführbaren Datei zu verbinden, etwas schief gelaufen ist. Wenn Sie in Qt Creator zur Registerkarte Compile-Ausgabe wechseln, sollten Sie in der Lage sein, die tatsächliche Fehlermeldung vom Linker selbst zu finden. Es könnte so einfach sein, nicht in der Lage zu sein, an den Ort zu schreiben, wohin die ausführbare Datei gehen soll (ich hatte das, wenn ich versuche, eine Anwendung neu zu erstellen, die ich noch ausgeführt habe), oder es könnte etwas ernster sein. Wenn Sie beispielsweise damit begonnen haben, eine Klasse hinzuzufügen, für die noch keine Methoden implementiert sind.

0

Löschen von .moc/.obj Sie können es erneut versuchen.