Anfänger - Fehler beim Ausführen von 'make'

Verschiedenes zu Qt
Antworten
DLH816
Beiträge: 4
Registriert: 27. Februar 2007 18:54

Anfänger - Fehler beim Ausführen von 'make'

Beitrag von DLH816 »

Hallo,

ich bin auch ganz frisch dabei und quäl mich son bisschen von Fehler zu Fehler!

Auf folgendem Stand bin ich:

- QT 4.2.2. für MinGW heruntergeladen und installiert
- Dev-cpp war vorher drauf, hab trotzdem Mingw nochmal extra herunterladen lassen
- PATH ist angepasst
- configure ausgeführt
- danach 'make' im QT-Hauptverzeichnis ausgeführt (6h Ausführung!!)
- QT Bibliotheken und Header in Dev-cpp eingebunden

Ergebnis: Ich kann QT Applikationen per Hand schreiben und mit Dev-cpp compilieren, linken und ausführen!

Problem: Ich kann keine makefiles mit 'make' zu ausführbare Programme übersetzen!

Dazu meine Vorgehensweise:

Code: Alles auswählen

Setting up a MinGW/Qt only environment...
-- QTDIR set to C:\Qt
-- PATH set to C:\Qt\bin
-- Adding C:\MinGW\bin to PATH
-- Adding C:\WINNT\System32 to PATH
-- QMAKESPEC set to win32-g++

C:\Qt>cd projects

C:\Qt\projects>qmake -project

C:\Qt\projects>qmake

C:\Qt\projects>make
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Qt/projects'
c:\Qt\bin\uic.exe chat.ui -o ui_chat.h
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runt
ime-pseudo-reloc -Wl,-subsystem,windows -o "debug\projects.exe"   -L"c:\Qt\lib"
-L"c:\Qt\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
c:\Qt\lib/libqtmaind.a(qtmain_win.o)(.text+0xd): In function `Z16q_atomic_set_pt
rPVvPv':
C:/Qt/include/QtCore/../../src/corelib/thread/qatomic.h: undefined reference to
`std::string::size() const'
c:\Qt\lib/libqtmaind.a(qtmain_win.o)(.text+0x60):C:/Qt/include/QtCore/../../src/
corelib/thread/qatomic.h: undefined reference to `std::string::operator[](unsign
ed int) const'
c:\Qt\lib/libqtmaind.a(qtmain_win.o)(.text+0x9f):C:/Qt/include/QtCore/../../src/
corelib/thread/qatomic.h: undefined reference to `std::string::operator[](unsign
ed int) const'
c:\Qt\lib/libqtmaind.a(qtmain_win.o)(.text+0xce):C:/Qt/include/QtCore/../../src/
corelib/thread/qatomic.h: undefined reference to `std::string::operator[](unsign
ed int) const'
c:\Qt\lib/libqtmaind.a(qtmain_win.o)(.text+0x10f): In function `WinMain':
C:/Qt/src/winmain/qtmain_win.cpp:68: undefined reference to `__gxx_personality_s
j0'
c:\Qt\lib/libqtmaind.a(qtmain_win.o)(.text+0x30b):C:/Qt/src/winmain/qtmain_win.c
pp:105: undefined reference to `qMain(int, char**)'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\projects.exe] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/projects'
mingw32-make: *** [debug-all] Error 2

C:\Qt\projects>
Ich bin was QT angeht blutiger Anfänger, hab aber alles an doku und tuts bearbeitet, auch die Suchfunkion beansprucht, bin aber zu keiner lösung gekommen!

Was mich sehr stört und vor allem auffällt sind die seltsamen Pfadangaben:

'c:\Qt\lib/libqtmaind.a(qtmain_win.o)(.text+0x10f): ' zum Beispiel!

Ich benutze noch Win2000Pro

Ich würd mich tierisch über Hilfe freuen!

ganz nette Grüße aus Osnabrück
PaRu
Beiträge: 4
Registriert: 5. März 2007 16:32

Beitrag von PaRu »

hast du mal das "hello world" programm aus dem tutorial versucht zu kompilieren?

außerdem versuchts du auf .a-libraries zu zugreifen und ich weiß nicht ob das unter windows funktioniert.
Gruß Patrick
DLH816
Beiträge: 4
Registriert: 27. Februar 2007 18:54

Beitrag von DLH816 »

also über den Dev-Cpp kann ich jedes beliebige QT Programm schreiben und Compilieren über qmake hab ich das nochnicht ausprobiert, werd ich aber gleich mal machen!

Da ich absoluter Anfänger was QT angeht bin und auch sonst nur einfache Konsolenprogramme unter C und C++ geschrieben hab, hab ich keine Ahnung was die Bibliotheken angeht. Ich weis nur, dass wenn man die QT Version im Zusammenhang mit Visual Studio installiert, dass dort nach dem ausführen von nmake im Hauptverzeichnis von QT, die Bibliotheken im Include verzeichnis von QT tatsächlich lib dateien werden.
Vielleicht hab ich ja auch irgendetwas bei der installation falsch gemacht, denn das Compilieren von QT allein hat 8 Stunden gedauert, bei einem 2.2+ Hauptprozessor, und das macht mich ein wenig stuzig. Doch eine Fehlermeldung gab es nicht! Seltsam!

Ich würd mich weiterhin über jede Anregung freuen!!
lg Mario
TBerger
Beiträge: 27
Registriert: 12. März 2007 09:47
Wohnort: Karlsruhe

Beitrag von TBerger »

Hallo,

das Problem ist, dass du keine Main() Methode in deinem Projekt hast. Du hast wahrscheinlich nur ein Formular mit Hilfe des Designers erstellt und willst nur das übersetzen.

Du brauchst abern noch eine Einsprung-Methode die ähnlich ist wie diese:

Code: Alles auswählen

int main(int argc, char *argv[])
{
  //Q_INIT_RESOURCE(application);

  QApplication app(argc, argv);
  Ui::MainWindow mainWin;
  mainWin.show();
  return app.exec();
}
Gruß Thomas.
DLH816
Beiträge: 4
Registriert: 27. Februar 2007 18:54

Beitrag von DLH816 »

ganz ganz großen dank an dich!! Wei gesagt ich bin absolut neu in der Materie QT! Die frage die sich für mich noch stellt ist, wo kann ich die main funktion einfügen? ich mein hätt ich den Quelltext vorliegen wärs ja kein problem aber mit uic schaff ich es einfach nicht quelltextdateien zu erstellen! rufe ich zum beispiel im project folder uic auf, springt der curser in die nächste zeile und das wars! Weder dateipfad noch eingabemöglichkeiten!?

Es tut mir leid das ich mich scheinbar so dämlich anstelle, aber ich hab nichts dazu gefunden!

würd mich weiterhin über hilfe tierisch freuen!!
uhu01
Beiträge: 150
Registriert: 10. Juli 2005 20:46

Beitrag von uhu01 »

Hy!

Du musst einfach ein neues .cpp file in deinem Ordner mit den anderen Source Files erstellen. Dort kannst du den Code dann reinkopieren.

Das Source File musst du dann nur noch in deinem .pro File eintragen (in der Zeile "SOURCES += ..."). Nun noch qmake ausführen.

Dann solltest du per make compilieren können. qmake sollte das Makefile auch so erstellt haben, das du den uic, moc etc. nicht mehr händisch aufrufen musst.

Nur als Tipp: Wenn du in den QtAssistant schaust, gibts unter dem Punkt "Getting Started" in der Qt Reference Documentation den Link "Tutorials und Examples". Schau dir die Tutorials mal an.

mfg
uhu01
Antworten