Installation von QT Creator unter Linux +altes QT

Verschiedenes zu Qt
Antworten
F.Zimmer
Beiträge: 8
Registriert: 19. Februar 2009 14:09

Installation von QT Creator unter Linux +altes QT

Beitrag von F.Zimmer »

Hallo,

mein Problem ist wahrscheinlich für Kenner lächerlich, aber ich knabbere
jetzt schon recht lange daran. Ich habe ein Problem mit der Installation
des Qt Creators auf einem Linux (KDE) System.
(bitte nicht sofort auslachen. :oops: )

Ich habe auf einem Entwicklungsrechner schon eine spezielle QT Version (4.2.2)
um Programme für ein Embedded System zu kompilieren.
(Jedenfalls gehe ich davon aus, dass es speziell ist *g* kann auch sein dass es nur das Qt Embedded ist)

Bisher habe ich den Qt Creator unter Windows verwendet, die Dateien
auf den Entwicklungsrechner gezogen und mit der alten QT Version kompiliert. (ging recht gut)

Nun habe ich allerdings das Problem dass ich auf die Serielle Schnittstelle
des Targets zugreifen muss. Wie ich hier im Forum schon gelesen habe
ist hierfür QextserialPort am besten geeignet. Da ich dies dann aber
sowohl unter Windows als auch unter Linux implementieren muss habe
ich mich dazu entschlossen den QT Creator auf dem Entwicklungsrechner
zu installieren.

Nun habe ich Probleme dass ich zwei QT Versionen auf einem Rechner
habe. Ich weis grundsätzlich sollte das kein Problem sein. Aber bei mir
klappts irgendwie nicht.

Fehlermeldung:
Cannot find -lfreetype

Weis nicht ob ich einfach alle Libraries neu installieren muss, oder ob und
wie ich die Pfade des Creators ändern kann damit es auf die
alten Qt Bibliotheken zugreift. :?:

Vielen Dank für die Antworten im Voraus!
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Dir fehlen einige abhängigkeiten.

Welche distribution verwendest du?
F.Zimmer
Beiträge: 8
Registriert: 19. Februar 2009 14:09

Beitrag von F.Zimmer »

wow das ging schnell.

ich arbeite mit Kubuntu 8.04
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Ok, dann

Code: Alles auswählen

sudo apt-get update && sudo apt-get install libfreetype6 && sudo apt-get install libglib2.0-0
Da werden noch mehr abhängigkeiten fehlen, vermute ich!

//EDIT:

Du kannst es dir ganz einfach machen indem du einfach folgendes installierst:

Code: Alles auswählen

sudo apt-get update && sudo apt-get install libqt4-dev
Das müsste alle abhängigkeiten auflösen.
F.Zimmer
Beiträge: 8
Registriert: 19. Februar 2009 14:09

Beitrag von F.Zimmer »

Hi, danke erstmal für die schnelle Hilfe,

bin jetzt nur am Problem, dass der Entwicklungs-PC nicht am Internet hängt (auch ich ihn auch net so schnell dran bekomm)

lade die Dateien von:
http://packages.ubuntu.com/hardy/i386/l ... 6/download

und
http://packages.ubuntu.com/hardy/all/li ... a/download

herunter, speicher sie aufm andern pc und versuch sie von dort auszuführen.

Meld mich wenns geklappt hat oder ich gescheitert bin
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Linux ohne internet könnte eine ziemlich langweilige angelegenheit werden, aber ok...

Dir werden mit sicherheit noch mehr abhängigkeiten fehlen, also wird es besser sein, wenn du dir einen internet anschluss organisierst!
F.Zimmer
Beiträge: 8
Registriert: 19. Februar 2009 14:09

Beitrag von F.Zimmer »

Ja das habe ich auch schon gemerkt :D
Ohne Internet ist das ganze immer ein rießen gefummel. Aber ich habe leider keine andere Wahl. Ich komme mit dem PC erst heute abend wenn ich zu Hause bin wieder ins Internet.

Zu den Abhängigkeiten, woran erkenne ich genau welche Dateien ich hinzufügen muss (Google? *g*), und bekomme ich dann wirklich keine Probleme mit der alten QT Version?

PS installier grad die libqt4-dev. ---grr is schwer ohne Internet---
F.Zimmer
Beiträge: 8
Registriert: 19. Februar 2009 14:09

Beitrag von F.Zimmer »

HI,
habe jetzt von Zuhause den Befehl:
sudo apt-get update && sudo apt-get install libqt4-dev

ausgeführt ging perfekt. QT läuft jetzt nun mach ich mich an die Implementation von QextserialPort :-)

Vielen Dank für die schnelle und gute Hilfe
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Um abhängigkeiten herauszufinden, kannst du auf die paketübersicht von ubuntu gehen.

Hier als beispiel libqt4-dev, da siehst du dann welche pakete benötigt werden.
F.Zimmer
Beiträge: 8
Registriert: 19. Februar 2009 14:09

Beitrag von F.Zimmer »

Hi,
so mein Problem ist gelöst, daher mein letzer Kommentar hierzu:
Qt und QextSerialPort auf Kubuntu zu installieren ist sehr einfach, auch für QT Neulinge, wenn man weis wie! :P
Daher hier eine kurze Auflistung, wie es bei mir funktioniert. (Bin mir sicher es gibt einen professionelleren Weg aber dieser geht schnell und einfach!)


- Aktuelle Qt Linux Version laden und installieren:
http://www.qtsoftware.com/downloads

- Dann die nötigen Bibliotheken mit dem Befehl von Mani99 laden

Code: Alles auswählen

sudo apt-get update && sudo apt-get install libqt4-dev 
- Nun die Zip von QextSerialPort laden (bei mir die qextserialport-1.2win-alpha.zip)
http://sourceforge.net/projects/qextserialport/files/

- Die Zip Datei einpacken und alle Header und cpp Dateien (im Hauptordner) in den Ordner des Projekts hinzufügen.

- Da hier nur für Linux entwickelt werden soll können beide win_ Dateien gelöscht werden

- Nun die Verbleibenden Dateien in die Project Datei des QT Creators einfügen.

Code: Alles auswählen

# -------------------------------------------------
# Project created by QtCreator 2009-07-31T11:31:26
# -------------------------------------------------
TARGET = Myserial
TEMPLATE = app
SOURCES += main.cpp \
    myserial.cpp \
    qextserialport.cpp \
    posix_qextserialport.cpp \
    qextserialbase.cpp
HEADERS += myserial.h \
    qextserialport.h \
    posix_qextserialport.h \
    qextserialbase.h
FORMS += myserial.ui \
    myserial.ui
- Versucht man nun das Projekt zu übersetzen, so erhält man vermutlich einige Fehlermeldungen.

- Daher muss in der qextserialport.h das define _TTY_LINUX_ gesetzt werden

- Zudem müssen alle Windowsspezifischen include befehle gelöscht werden

- Z.B.

Code: Alles auswählen

#include <objbase.h> 
Dies sind Headerdateien für Windows und werden hier nicht gebraucht

- Bei mir gab es noch Probleme bei den defines, es wurden Fehler in Codesegmenten gezeigt, die laut define nicht übersetzt werden sollten. Daher habe ich alle defines die nicht erfüllt werden (z.B. _TTY_WIN_) gelöscht.

- Fertig.

- Als erstes Programm habe ich das Programm MySerial von quinte17 verwendet:

- http://mrunix.de/forums/showthread.php? ... dc&t=65237
Hoffe das diese Beschreibung anderen hilft schneller voranzukommen.



Gruß.
F.Zimmer
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Wäre es nicht besser aus dem qextserialport zeugs eine lib zu machen und diese dann einzubinden?
F.Zimmer
Beiträge: 8
Registriert: 19. Februar 2009 14:09

Beitrag von F.Zimmer »

Mani99 hat geschrieben:Wäre es nicht besser aus dem qextserialport zeugs eine lib zu machen und diese dann einzubinden?
Dies wäre der bessere/sauberere Weg, den ich meinte. :D Allerdings weis ich persönlich nicht wie es genau geht, und finde es daher schwerer.

Wenn du oder jemand Anderes den Weg detailiert beschreiben kann, ist es sicher, auch für Andere, eine große Hilfe.
Ich für meinen Teil finde bin mit dem einbinden der Dateien im Projekt sehr zufrieden. Auch weil ich noch Crosscompilieren muss und die Probleme mit einer lib dabei nicht abschätzen kann.

Vielen Danker Mani für deine hervorragende Hilfe, ohne dich hätte ich es wohl nicht so schnell geschafft!

PS: jetzt hab ich doch nochmal meinen Senf dazu gegeben *g
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Ich hab mir die sourcen gerade angesehen, und das qextserialport dings ist als schon als library angelegt.

Wechsle doch einfach per terminal in das verzeichnis von qextserialport und führe ein make aus, dann müsste die lib erstellt werden! In der pro datei ist für windows und linux schon unterschieden worden, also müsstest du nicht einmal etwas im source ändern!
Antworten