Wie setze ich PATH-Variable für QT4 ?
Hallo Liste Gesternabend um ca 21:00Uhr hatte ich versucht dieses Problem zu posten, da nix passiert ist versuche ich es nocheinmal. Also: Bitte nicht böse sein, wenn es doppelt kommt. Ich habe eine Idee für ein Programm und möchte es unter QT4 realisieren. Problem: mathe.o: In function `main': mathe.cpp:(.text+0x43): undefined reference to `MainWindow::MainWindow()' Ich sehe das so das die Funktion MainWindow aus den QT-Bibliotheken nicht eingebunden wurden. Der entsprechende Passus sieht so aus: #include <QMainWindow> class QAction; class QLabel; class FindDialog; class Spreadsheet; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); und dann kommen Fuktionen... Installiert ist alles bis auf das setzen der PATH-Variablen. Meines Wissens nach ist openSuSE10.2 standardmäßig mit der bash installiert. also habe ich geguckt: ~/.bashrc - gefunden enthällt aber keinen Abschnitt PATH oder ähnliches /etc/.bash.bashrc und /etc/.profiles enthalten auch keinen abschnitt PATH. Wo wird der Pfad eingetragen? Oder bin ich da auf dem Holzweg bei dieser Fehlermeldung? freut mich von euch zu hören -- Mit freundlichen Grüßen with best regards Lars Steen --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hallo Lars, PATH ist eine Umgebungsvariable. Jedes Programm bzw. jeder Prozess bekommt u.a. einen Satz Umgebungsvariablen. Wenn Du in der Shell set | less eingibst, dann werden Dir die gesetzten Umgebungsvariablen, unter anderem auch PATH aufgelistet. In C kannst Du umgebungsvariablen für ein Programm mit der Funktion setenv() setzen. (man 3 setenv) Das Problem, das Du beschreibtst, liegt aber m.E. daran, daß der Linker das Symbol nicht auflösen kann, und das hat nichts mit dem Pfad zu tun. Schau Dir mal Deine Kommandozeile an, und sieh nach, ob Du mit dem Schalter -lqt compiliert hast. gcc -o myprog mysource.c ... -I/usr/lib/qt/include -L/usr/lib/qt/lib -lqt Ist eine Weile her, daß ich qt code compiliert habe, aber so habe ich es in Erinnerung. Überprüf die Pfade nach -I und -L vorsichtshalber. Gruß, Oliver Am Donnerstag, 12. April 2007 16:17 schrieb Lars Steen:
Hallo Liste
Gesternabend um ca 21:00Uhr hatte ich versucht dieses Problem zu posten, da nix passiert ist versuche ich es nocheinmal. Also: Bitte nicht böse sein, wenn es doppelt kommt.
Ich habe eine Idee für ein Programm und möchte es unter QT4 realisieren. Problem: mathe.o: In function `main': mathe.cpp:(.text+0x43): undefined reference to `MainWindow::MainWindow()'
Ich sehe das so das die Funktion MainWindow aus den QT-Bibliotheken nicht eingebunden wurden. Der entsprechende Passus sieht so aus:
#include <QMainWindow>
class QAction; class QLabel; class FindDialog; class Spreadsheet;
class MainWindow : public QMainWindow { Q_OBJECT
public: MainWindow(); und dann kommen Fuktionen...
Installiert ist alles bis auf das setzen der PATH-Variablen.
Meines Wissens nach ist openSuSE10.2 standardmäßig mit der bash installiert. also habe ich geguckt: ~/.bashrc - gefunden enthällt aber keinen Abschnitt PATH oder ähnliches /etc/.bash.bashrc und /etc/.profiles enthalten auch keinen abschnitt PATH.
Wo wird der Pfad eingetragen? Oder bin ich da auf dem Holzweg bei dieser Fehlermeldung?
freut mich von euch zu hören
To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Am Donnerstag, 12. April 2007 16:34 schrieb Oliver Block: Hallo Oliver Vielen Dank für deine schnelle Antwort :-) Du hattest recht
Hallo Lars,
PATH ist eine Umgebungsvariable. Jedes Programm bzw. jeder Prozess bekommt u.a. einen Satz Umgebungsvariablen. Wenn Du in der Shell
set | less
hab ich gemacht und gesehen das der Pfad richtig gesetzt ist! Ohne das ich dran fummeln musste...
eingibst, dann werden Dir die gesetzten Umgebungsvariablen, unter anderem auch PATH aufgelistet. In C kannst Du umgebungsvariablen für ein Programm mit der Funktion setenv() setzen. (man 3 setenv)
Das Problem, das Du beschreibtst, liegt aber m.E. daran, daß der Linker das Symbol nicht auflösen kann, und das hat nichts mit dem Pfad zu tun. Schau Dir mal Deine Kommandozeile an, und sieh nach, ob Du mit dem Schalter -lqt compiliert hast.
gcc -o myprog mysource.c ... -I/usr/lib/qt/include -L/usr/lib/qt/lib -lqt
Hört sich interessant an Ich poste mal die komplette Ausgabe: ls@core:~/Programmierung/mathe/src> gmake g++ -m64 -o ../bin/mathe mathe.o -L/usr/lib64 -lQtGui -L/usr/lib64 -L/usr/X11R6/lib64 -lpng -lSM -lICE -lXi -lXrender -lXrandr -lXfixes -lXcursor -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -ldl -lpthread mathe.o: In function `main': mathe.cpp:(.text+0x43): undefined reference to `MainWindow::MainWindow()' und wie ich das sehe steht dort nirgendwo /usr/local/TOLLTECH/QT-4.2.3
Ist eine Weile her, daß ich qt code compiliert habe, aber so habe ich es in Erinnerung. Überprüf die Pfade nach -I und -L vorsichtshalber.
Gruß,
Oliver
Ich bin ja ein kleiner newbie der gerade anfängt: Also dachte ich so einfach wie möglich: KDevelop 3.3.5 ist die wahl meiner IDE - weiss ja nicht was du so nimmst, aber wo mache ich die Einstellungen zum Compiler? bzw was er alles einbinden soll - unter xwpe war das irgendwie einfacher. -- Mit freundlichen Grüßen with best regards Lars Steen --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Am Donnerstag, 12. April 2007 17:18 schrieb Lars Steen:
ls@core:~/Programmierung/mathe/src> gmake g++ -m64 -o ../bin/mathe mathe.o -L/usr/lib64 -lQtGui -L/usr/lib64 -L/usr/X11R6/lib64 -lpng -lSM -lICE -lXi -lXrender -lXrandr -lXfixes -lXcursor -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -ldl -lpthread mathe.o: In function `main': mathe.cpp:(.text+0x43): undefined reference to `MainWindow::MainWindow()'
In welcher Bibliothek befindet sich die Klasse MainWindow? (Von welcher Klasse hast Du sie abgeleitet?) Wenn das KMainWindow ist, dann hat das mit qt (als Bibliothek) nichts zu tun. In deinem Verzeichnis befindet sich eine Datei mit der Endung pro. Die wird von qmake (nicht gmake) benutzt um das Makefile zu erstellen. qt verfolgt da einen etwas anderen Ansatz, wegen der Portierbarkeit. Schau mal nach, ob diese pro-Datei alle notwendigen c und h Einträge hat. Um qmake etwas besser zu verstehen, sie bitte hier nach. Normalerweise solltest Du keine manuellen Einträge vornehmen müssen. - Normalerweise.:) http://doc.trolltech.com/4.2/qmake-manual.html Gruß, Oliver --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hallor, verzeih' mir, aber ich poste hier mal unzitiert. Benutze anstatt gmake, qmake. In KDevelop ist es etwas komplizierter. Wer das implementiert hat, war sicher nicht gerade auf dem Damm. Erst musst Du ein Projekt erstellen und dann kannst Du dort den Pfad für qmake und designer hinterlegen. Dummerweise musst Du das für jedes Projekt erneut einrichten. Unter "Custom include Paths" bei C++-Unterstützung, gibst Du dann noch zusätzliche Pfade an. Allerdings wurden die bei mir nie eingebunden. Ist das Projekt offen, klickst Du, wenn Du die gleiche Ansicht hast wie ich, rechts auf QMake-Manager. Dort hast Du oben rechts ein Werkzeugsymbol. Auch dort musst Du noch einige Einstellungen machen unter "includes"/ Ordner außerhalb des Projekts einfach die Ordern hinzufügen, die nicht in Deinem Projektpfad liegen. So arbeite ich mit KDevelop 3.4.0 und QT 4.4-Snapshot x. Ich gehe mal davon aus, dass Du QtGUI oder QMainWindow eingebunden hast. Am Donnerstag, 12. April 2007 schrieb Lars Steen:
Am Donnerstag, 12. April 2007 16:34 schrieb Oliver Block:
Hallo Oliver
Vielen Dank für deine schnelle Antwort :-) Du hattest recht
Hallo Lars,
PATH ist eine Umgebungsvariable. Jedes Programm bzw. jeder Prozess bekommt u.a. einen Satz Umgebungsvariablen. Wenn Du in der Shell
set | less
hab ich gemacht und gesehen das der Pfad richtig gesetzt ist! Ohne das ich dran fummeln musste...
eingibst, dann werden Dir die gesetzten Umgebungsvariablen, unter anderem auch PATH aufgelistet. In C kannst Du umgebungsvariablen für ein Programm mit der Funktion setenv() setzen. (man 3 setenv)
Das Problem, das Du beschreibtst, liegt aber m.E. daran, daß der Linker das Symbol nicht auflösen kann, und das hat nichts mit dem Pfad zu tun. Schau Dir mal Deine Kommandozeile an, und sieh nach, ob Du mit dem Schalter -lqt compiliert hast.
gcc -o myprog mysource.c ... -I/usr/lib/qt/include -L/usr/lib/qt/lib -lqt
Hört sich interessant an Ich poste mal die komplette Ausgabe:
ls@core:~/Programmierung/mathe/src> gmake g++ -m64 -o ../bin/mathe mathe.o -L/usr/lib64 -lQtGui -L/usr/lib64 -L/usr/X11R6/lib64 -lpng -lSM -lICE -lXi -lXrender -lXrandr -lXfixes -lXcursor -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -ldl -lpthread mathe.o: In function `main': mathe.cpp:(.text+0x43): undefined reference to `MainWindow::MainWindow()'
und wie ich das sehe steht dort nirgendwo /usr/local/TOLLTECH/QT-4.2.3
Ist eine Weile her, daß ich qt code compiliert habe, aber so habe ich es in Erinnerung. Überprüf die Pfade nach -I und -L vorsichtshalber.
Gruß,
Oliver
Ich bin ja ein kleiner newbie der gerade anfängt: Also dachte ich so einfach wie möglich: KDevelop 3.3.5 ist die wahl meiner IDE - weiss ja nicht was du so nimmst, aber wo mache ich die Einstellungen zum Compiler? bzw was er alles einbinden soll - unter xwpe war das irgendwie einfacher.
-- gruß Oliver --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
participants (3)
-
Lars Steen
-
Oliver Block
-
Oliver Leue