Seite 1 von 2
windows-projekt unter linux übersetzen
Verfasst: 20. Dezember 2009 22:58
von drewle
Hallo,
ich habe ein Projekt, welches soweit unter Windows ohne Fehler übersetzt werden kann.
Ich habe jetzt das Projekt genommen und versucht unter Linux zu übersetzen. Hierbei habe ich folgende Fehlermeldung bekommen:
Code: Alles auswählen
Running build steps for project internet...
Starting: /usr/bin/qmake /home/andreas/programing/qt/internet/internet.pro -spec /usr/share/qt4/mkspecs/linux-g++-64 -r CONFIG+=debug
Exited with code 0.
Could not find make command: make in the build environment
Error while building project internet
When executing build step 'Make'
Canceled build.
Weiß jemand, was falsch ist?
Ich habe ein kleines Projekt unter Linux erstellt und ohne Probleme compiliert. (Die Installation von QT unter Linux scheint ok zu sein und make wird dann wohl auch gefunden!)
Schon mal danke,
Drew
Verfasst: 21. Dezember 2009 09:57
von Christian81
Einen Compiler sollte man auch unter Linux erstmal haben bevor man versucht was zu kompilieren

Verfasst: 21. Dezember 2009 10:02
von franzf
Christian81 hat geschrieben:Einen Compiler sollte man auch unter Linux erstmal haben bevor man versucht was zu kompilieren

Och muss ich das jetzt echt sagen?
"make" ist kein Compiler
Er braucht halt einfach ein die ganzen *-dev-Pakete. Was für ein "Linux" hast du denn? Dann kann man dir sagen was du genau installieren musst.
Verfasst: 21. Dezember 2009 10:08
von Christian81
franzf hat geschrieben:Christian81 hat geschrieben:Einen Compiler sollte man auch unter Linux erstmal haben bevor man versucht was zu kompilieren

Och muss ich das jetzt echt sagen?
"make" ist kein Compiler
tztz

Wenn er kein make hat hat er auch einen gcc, aber Du hast natürlich recht.
Verfasst: 21. Dezember 2009 10:11
von drewle
Hallo,
wie schon erwähnt, ein einfaches Beispiel, das ich unter Lunx erstellt habe kann ich übersetzen.

ch gehe darum davon aus, dass ich einen Compiler habe.

)
Die Pfade stehen doch im Makefile, und das wird jedesmal neu erstellt.

ch hab's jetzt auch schon mal vor dem kompilieren gelöscht. Ohen Erfolg!) Ich bin darum davon ausgegangen, das ich das pro-File von Windows einfach übernehman kann.
Hat jemand von Euch schon mal das gleiche Projekt unter Windows und Linux übersetzt? Was muß man anpassen?
danke,
Drew
Verfasst: 21. Dezember 2009 10:16
von drewle
Hallo,
ich hab die neueste Open Suse. Ich hab einfach mal alles installiert, was die Buchstabenfolge qt4 enthällt. Dazu noch alles, was gcc oder cpp enthällt.
Verfasst: 21. Dezember 2009 10:29
von franzf
Wenn du keine Windows-Spezifischen Befehle verwendest, solltest du ohne Probleme das .pro direkt unter Windows verwenden können.
Teste mal ob du "make" installiert hast.
z.b.
Und ein einfaches Programm kannst du übersetzen? Also ist g++ vorhanden?
Und sämtliche Makefiles hast du ja schon entfernt. Liegen dann auch keine mehr in eventuellen Unterordnern?
Versuch es einfach mal mit einem frischen Qt4-Projekt.
Verfasst: 21. Dezember 2009 10:56
von RavenIV
Also bei mir klappt das.
Hab ein Qt-Projekt unter Windows erstellt, kompiliert, läuft.
Dann hab das Ganze nach Linux kopiert und dort erstellt, läuft.
Als Einziges musste ich die Pfade in der .pro anpassen.
Schliesslich bin ich auf die Möglichkeit gestossen, Scopes zu verwenden.
Da kann man einen Bereich für Windows und einen Bereich für Unix (Linux) anlegen und spezifische Sachen angeben.
Habe beides Mal mit Eclipse gearbeitet. Für Windows mit MinGW, für Linux mit gcc.
Verfasst: 21. Dezember 2009 11:07
von drewle
@ franzf
Code: Alles auswählen
andreas@linux-3rfe:~> which make
/usr/bin/make
andreas@linux-3rfe:~> make -version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-unknown-linux-gnu
'make' scheint vorhanden zu sein.
@RavenIV
welche Pfade im pro musstest Du anpassen? Bei mir sind da keine drin:
Code: Alles auswählen
#-------------------------------------------------
#
# Project created by QtCreator 2009-09-16T19:54:21
#
#-------------------------------------------------
QT += network
TARGET = internet
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
Vielleicht, weil ich alles im gleichen Verzeichnis hab. (Das Projekt ist noch nicht so groß.)
Danke für Eure Hilfe
Verfasst: 21. Dezember 2009 11:12
von franzf
RavenIV hat geschrieben:Als Einziges musste ich die Pfade in der .pro anpassen.
Inwieweit Pfade anpassen? Für zusätzliche Includes oder Libs sind Scopes sicherlich eine Lösung.
Wenn es dir um die Anpassung der Pfad-Trennzeichen geht:
qmake versteht problemlos unter Windows auch das "/", da braucht es im .pro kein "", wie für z.B. die Windows-Befehlseingabe usw.
Verfasst: 21. Dezember 2009 11:44
von drewle
Ok,
ich habe jetzt mal meine cpp, h und ui Files in ein neues Projekt kopiert. (Hier gab es Files mit den gleichen Namen.)
Make wurde dann anscheinen gefunden. Zumindest gab es eine Fehlermeldung, die sich schon auf den Inhalt des Codes bezogen.
Ich hab dann noch fest gestellt, dass die Zeile:
in dem neuen pro gefehlt hat. (wo kommt die den her?)
Schon ging es wieder ein Schritt weiter...
Jetzt kennt er anscheinend sprintf nicht!?
Ich bin dann noch über die Datei pro.user gestolpert. Die enthielt tatsächlich noch einen Pfad auf C: für make. Umbenennen in pro.user.save hat aber nichts gepracht. Löschen aber schon. sprintf wird aber auch nicht erkannt.
Woher kommt das pro.user?
Woher kommt die Zeile QT +=... im pro
Wieso gehen die Pfade für sprintf verloren?
Verfasst: 21. Dezember 2009 11:51
von franzf
drewle hat geschrieben:Woher kommt das pro.user?
Woher kommt die Zeile QT +=... im pro
Wieso gehen die Pfade für sprintf verloren?
1) "pro.user" kommt vllt. von deiner IDE unter Windows? (K.A. aber sicherlich nicht von Qt

)
2) Die kommt vom User selber (oder wieder: IDE-Magic

)
Qt nimmt für ein Standard-Projekt nur QtGui und QtCore. Willst du mehr musst du das dem qmake irgendwie mitteilen, das geht am einfachsten über das .pro-file. Das macht qmake nicht automatisch, da ist Handarbeit angesagt.
3) Dein Compiler unter Windows hat wohl automatisch einige (alle?) C-Standard-Header eingebunden, kann das sein?
Im code ein einfaches
sollte Wunder bewirken

Verfasst: 21. Dezember 2009 12:03
von RavenIV
franzf hat geschrieben:RavenIV hat geschrieben:Als Einziges musste ich die Pfade in der .pro anpassen.
Inwieweit Pfade anpassen? Für zusätzliche Includes oder Libs sind Scopes sicherlich eine Lösung.
Wenn es dir um die Anpassung der Pfad-Trennzeichen geht:
qmake versteht problemlos unter Windows auch das "/", da braucht es im .pro kein "", wie für z.B. die Windows-Befehlseingabe usw.
Bei mir sind die include-Pfade und die lib-Pfade bei Windows und Linux unterschiedlich.
Einmal "C:\Windows-Pfad-zur-Lib\libname.lib" und "/linux-pfad-zur-lib/libname.a"
Und bei den includes ebenso.
Wo sollte sowas denn sonst hin?
Verfasst: 21. Dezember 2009 12:06
von drewle
Yep, das wirkt Wunder.

Ich kann mein Projekt übersetzen und es funktioniert auch noch.
Das pro.user ist auch bei meinem, unter Linux erstellten Projekt vorhandnen. Wurde aber anscheinend in beiden Fällen (W und L) automatisch erzeugt.
Ich bin soweit glücklich. Vielen Dank für Eure Hilfe!
Verfasst: 21. Dezember 2009 12:28
von franzf
drewle hat geschrieben:Das pro.user ist auch bei meinem, unter Linux erstellten Projekt vorhandnen. Wurde aber anscheinend in beiden Fällen (W und L) automatisch erzeugt.
AHHH! Du verwendest qt-creator

Hab jetzt auch gesehen, dass der da ein ".user" anlegt.
Es gibt bei mir auch ein "CMakeLists.txt.user". Das ist einfach eine in ein qt-creator-eigenes XML transformierte Projekt-Beschreibung.
Sowas gibt man aber nicht mit, wenn man sein Programm veröffentlicht
@Raven:
Natürlich kommt sowas ins .pro!
Es war mir einfach nicht klar, was du an deinen "Pfaden" ändern willst. Das übliche, was Pfade unter Linux und Windows unterscheidet ist einfach das "/", drum hab ich da nachgefragt...