C++ Standardcompiler ändern

BCHMEMBER

Lt. Junior Grade
Registriert
Mai 2007
Beiträge
310
Guten Tag erstmal,
da es sich hier nicht um eine Frage nach Code handelt bzw was ich schreiben soll weiß ich nicht ob das Unterforum hier richtig ist. Also falls es im Mac Forum besser ist bitte verschieben!

Nun zu meiner Frage:
Ich besuche gerade eine Vorlesung mit dem Titel Computational Physics, in der wir mit C++ programmieren sollen.
Leider ergeben sich viele Schwierigkeiten mit der Kompatibilität der Dateien mit meinen Partnern.
Da ich unter Mac OS X und die anderen unter Linux coden.
Damit wir die Boost Library nutzen können musste ich schon einen Symlink zum richtigen Ordner einrichten.
Da wir das Problem jetzt auch noch mit OpenMP haben würde ich gerne wissen ob ein anderer Ansatz das Problem vielleicht lösen kann.
Kann ich den aufgerufenen Compiler der standardmäßig mit dem Terminalbefehl g++ aufgerufen wird ändern? Denn damit wird der Compiler von Xcode gestartet der dann aber auch nur in den Standardpfaden von Xcode nach den headern sucht. Aber ich habe die Sachen über Macports auf jeden Fall installiert, diese werden nur nicht gefunden da der Compiler der aufgerufen wird dort nicht sucht.

Ich hoffe ich konnte mein Problem nachvollziehbar darlegen (ich fürchte allerdings nicht :D )

Vielen Dank schon mal
 
Mittels
Code:
which g++
findest du heraus wohin g++ zeigt, denn es handelt sich unter *nix Systemen hierbei um einen Link.
Bei mir (Ubuntu 13.10) siehts so aus: Im Ordner
Code:
/usr/bin/
g++ -> g++-4.8
Dh du könntest mit zB dem Midnight-Commanders halbwegs komfortabel ändern, wohin g++ zeigt.
Das beantwortet jetzt zwar deine Frage
Kann ich den aufgerufenen Compiler der standardmäßig mit dem Terminalbefehl g++ aufgerufen wird ändern? Denn damit wird der Compiler von Xcode gestartet der dann aber auch nur in den Standardpfaden von Xcode nach den headern sucht.
aber ich sehe noch nicht, wie du damit deine Probleme lösen willst.

Wieso verwendet ihr nicht einfach eine moderne *nix kompatible Entwicklungsumgebung? Der QT-Creator ist wirklich großartig und würde euch sehr unterstützen solche probleme in den Griff zu bekommen. Es ist auch kein Hexenwerk damit Plattform-abhängig Includes/Libs in der .pro Datei einzutragen.
Natürlich kann man auch von Hand die make-files schreiben - die meisten *nix user stehen ja auf sowas ;)
 
also wenn ich in
~/usr/bin
das Kommando which g++ eingebe dann kriege ich als Ausgabe nur wieder denselben Ordner
usr/bin/g++

Das grundlegende Problem ist dass wir, wie du schon erwähntest, alles per makefiles machen. Doch die Headerdateien die wir in der cpp Datei includieren sind bei mir wegen Mac OS X eben nicht an der erwarteten Stelle.
Ich habe bald auch wieder nen Linux Rechner zur Verfügung aber leider keinen mobilen, wäre also schon schöner wenn es auch auf dem MacBook klappt.
 
also wenn ich in
~/usr/bin
das Kommando which g++ eingebe dann kriege ich als Ausgabe nur wieder denselben Ordner
usr/bin/g++
So ist das auch gedacht: Egal wo du which aufrufst, die Konsole antwortet dir wo die Datei g++ tatsächlich liegt. Dh sofern du den Ort der Hinzeigens ändern willst müsstest du das dort tun.

Das grundlegende Problem ist dass wir, wie du schon erwähntest, alles per makefiles machen.
Willkommen 1980 ;) Ich weiß, dass auch heutzutage Menschen noch denken sowas müsste man oder müsste man können.. ich halte nicht viel davon - erst recht nicht, wenn diese Probleme nicht Teil der Arbeit sein sollen.

Doch die Headerdateien die wir in der cpp Datei includieren sind bei mir wegen Mac OS X eben nicht an der erwarteten Stelle.
Man kann problemlos mehrere Pfade dem Linker oder der Compiler-Include-Suche hinzufügen.
Google mal nach "g++ add include path".
Der Einfachheithalber müsst ihr euch nichtmal die Mühe machen nach Betriebssystem in den Makefiles zu unterscheiden und ich denke es schadet nicht nicht-existende oder falsche Pfade auf allen Plattformen zu adden auch wenn das natürlich nicht so professionell/sauber ist wie die Unterscheidung mit if / else je nach kompiliernder Plattform.

Ich habe bald auch wieder nen Linux Rechner zur Verfügung aber leider keinen mobilen, wäre also schon schöner wenn es auch auf dem MacBook klappt.
Mit SSD-Macbook ist ein Ubuntu in einer VirtualBox in unter 1h Installiert... evtl wäre das eine gute Lösung für dich?
Evtl brauchst du noch das dort verlinkte "VirtualBox 4.3.10 Oracle VM VirtualBox Extension Pack"
 
:D So wollte ich das gar nicht sagen mit den makefiles. Ich finde das erleichtert den Standard Compiler per Terminal Workflow doch erheblich.
Ich habe leider auch die Befürchtung, dass es mit dem includen der anderen Pfade nicht getan wäre, da der Standard GCC Compiler noch auf Version 4.2.1 oder sowas zu sein scheint.
Daher hatte ich auch gehofft dass ich einfach die neuere Version nutzen könnte mit dem Terminalaufruf...
Ich werde morgen mal nach deinem Tipp schauen und mit meinen Kommilitonen schauen wie wir das am einfachsten lösen können, ohne einen Zweit Laptop zu Kaufen :D Ich mag meinen Mac ja schon sehr :)
 
Der "Standard-g++" ist übrigens ein clang, also eigentlich sogar noch wesentlich cooler als der GNU Compiler *hidez*
 
Der Einfachheit halber würde ich auch mit ner VM arbeiten. Ubuntu Server belegt ca 3GB, ich denke das ist verschmerzbar. Dann hast du in OSX dein Terminalfenster mit dem du per SSH in der VM hängst um make aufzurufen. Den Ordner mountest du per sshfs und kannst daher auch mit deinen OSX Tools an den Dateien rumeditieren. Das mache ich auch so, da man einfach weniger Probleme hat und sich sein System nicht mit Sachen zumüllt die man eigentlich nur für ein Projekt braucht.
 
kuddlmuddl schrieb:
Willkommen 1980 ;) Ich weiß, dass auch heutzutage Menschen noch denken sowas müsste man oder müsste man können.. ich halte nicht viel davon - erst recht nicht, wenn diese Probleme nicht Teil der Arbeit sein sollen.
Was sollte den bitte die Alternative zu makefiles sein?
 
Redo von djb ist doch jetzt so hip. Und djb ist bekanntlich der steilste Hengst der Welt (Quelle: djb)
 
Ich habe leider auch die Befürchtung, dass es mit dem includen der anderen Pfade nicht getan wäre, da der Standard GCC Compiler noch auf Version 4.2.1 oder sowas zu sein scheint.
Daher hatte ich auch gehofft dass ich einfach die neuere Version nutzen könnte mit dem Terminalaufruf...
g++ ist ein Link und den kann man ändern - auch innerhalb einer makefile.
Dh es ist einfach mehrere Versionen des GCC parallel installiert zu haben und jeweils die gewünschte zu nutzen. Hierfür wie oben beschrieben das Ziel des Links ändern oder googlen: [1] [2] usw
Wenn du wirklich denkst es liegt an der Version wäre damit dein Problem gelöst.
Ich bin mir aber ziemlich sicher, dass es (wie so oft unter Linux ;) an nicht angepassten Pfaden oder Rechten liegt.
Poste mal 2, 3 deiner Fehlermeldungen oder google danach und evtl kriegt mans dann auch unter deinem MacOSX zum laufen - was ich sehr stark vermute.
Die Basis bei MacOSX ist ja ein *nix. Dh du kannst jede GCC Version nach Wahl installieren und auch die selben Bibliotheken wie zB Boost in der gewünschten Version installieren.
Im grunde hast du das im ersten Posting doch auch schon gesagt?
Aber ich habe die Sachen über Macports auf jeden Fall installiert, diese werden nur nicht gefunden da der Compiler der aufgerufen wird dort nicht sucht.

wie wir das am einfachsten lösen können, ohne einen Zweit Laptop zu Kaufen
Eine virtuelle Maschine.. wurde doch schon vorgeschlagen? Dann können alle mit gleichen Voraussetzungen arbeiten und du müllst dir deinen Mac nicht mit unzähligen vergeblichen Lib-Installationen zu ;)

Was sollte den bitte die Alternative zu makefiles sein?
Ich wollte nicht sagen, dass generell keine makefiles mehr zum Einsatz kommen sondern nur, dass man sie nach Möglichkeit nicht selber schreibt.
 
Zurück
Oben