• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

IDE mit gcc unter Mac OS X nutzen

bw1faeh0

Uelzener Rambour
Registriert
06.01.08
Beiträge
370
Hallo Leute,

ich möchte Software für ein ARM-PC programmieren (Raspberry PI). Weil ich auf den PC (Linux) nur Zugriff über eine SSH-Konsole habe und mir in dieser das Programmieren mit nano zu aufwändig erscheint, habe ich netatalk installiert und eine AFP-Freigabe auf dem Linux-PC eingerichtet.

Nun kann ich also am Mac auf die Daten zugreifen.

Nun suche ich nach einer IDE, mit der ich C-Projekte erstellen und verwalten kann. Sinnvoll wäre es auch, mittels gcc diese auch gleich am Mac zu kompilieren.

Bietet sich da XCode an? Kann ich in XCode einen gcc einbinden und Code für ARM-Architekturen übersetzen? Auf die Schnelle habe ich im Netz leider keine Anleitungen gefunden.

Gibt es ähnliche IDEs, die mir die Möglichkeit bieten externe Makefiles zu nutzen und Standard-Features einer IDE bieten?

Vielen Dank für Eure Antworten!

Christian
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Hallo,

Du kannst in Xcode sogar pro Target die "C rule" einstellen. Da könntest Du dann den gcc, den Du brauchst verwenden.

Apple selbst liefert ja nur noch llvm-gcc aus, ich bin nicht sicher, ob der Dir weiterhilft. Der kann natürlich armv6 und armv7, weiss aber nicht, ob das der Dialekt ist, den Du brauchst.

Ist das ein Tip in die richtige Richtung?

Alex
 

bw1faeh0

Uelzener Rambour
Registriert
06.01.08
Beiträge
370
Kann man denn den GCC für Mac irgendwo runterlasen, oder gibt es den GCC nur über Mac ports oder ähnliches?
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
llvm-gcc sollte sich genau so verhalten. Brauchst Du denn eine spezielle Version?
 

bw1faeh0

Uelzener Rambour
Registriert
06.01.08
Beiträge
370
Naja, ich habe folgendes Makefile, das ich bisher immer auf dem Pi laufen lasse:

Code:
CC = gcc
CFLAGS  = -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -marm -O3 -Wall
LD = ld
LDFLAGS = -lrt

OBJ = main.o bcm2835.o lcd.o raspilcd.o
BIN = raspilcd
gpio: $(OBJ)
 $(CC) $(CFLAGS) -o $(BIN) $(OBJ) $(LDFLAGS)
%.o: %.c
 $(CC) $(CFLAGS) -c $<

.PHONY: clean
clean:
 rm -rf $(BIN) $(OBJ)

Ich denke, dass die CFlags das wichtige sind.

Kennst du eine Anleitung, wie ich dieses Makefile in XCode Targets umwandle? Ich finde das Dialogfenster zum Einstellen der Targets in XCode alles andere als übersichtlich und einfach...
 
Zuletzt bearbeitet:

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Es ist jetzt die Frage, was Du willst: Du kannst in Xcode einfach Projekte für "External Build Systems" anlegen, und denen dann Dein makefile so geben, wie es ist.

Ich finde die Einstellungen der Targets in Xcode durchaus übersichtlich (wie sollte es denn übersichtlicher aussehen?), aber wenn Xcode vor allem für diese Entwicklung nehmen möchtest ist es vielleicht besser, bei make zu bleiben.

Gruss

Alex
 

bw1faeh0

Uelzener Rambour
Registriert
06.01.08
Beiträge
370
Na was schön wäre ist, wenn ich in XCode auf den Compile-Button klicke Xcode im Hintergrund ein Make ausführt, die Ausgaben auswertet und mir im Code zeigt, was fehlerhaft ist und Probleme macht.
Das wäre das Ziel.
Um das zu können, muss der Compiler auf meinem System ausgeführt werden. Wenn ich also kein gcc zusätzlich installiert habe, müsste dann also lvm-gcc zur Stelle sein.
Dies würde dann wieder bedeuten, dass ich bestimmt auch die internen Boardmittel von XCode verwenden kann.

Also bräuchte ich eine Anleitung, wie ich diese Boardmittel (Targeteinstellungen, Compileroptionen, Linkeroptionen) korrekt einstelle, so dass ich nur noch auf einen Button klicken muss.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Probier es doch einfach einmal aus, als externes Buildtool. Xcode sollte den Output verstehen können.

Und … "One more thing":

Chris Espinosa schrieb:
The C language is case-sensitive. Compilers are case-sensitive. The Unix command line, ufs, and nfs file systems are case-sensitive.
I'm case-sensitive too, especially about product names. The IDE is called Xcode. Big X, little c. Not XCode or xCode or X-Code. Remember that now.​
Danke

Alex​
 
  • Like
Reaktionen: bw1faeh0

bw1faeh0

Uelzener Rambour
Registriert
06.01.08
Beiträge
370
Dann musst du am Lesen arbeiten - der erste Treffer beantwortet deine Frage.

Der erste Treffer beschreibt, wie man in einer virtuellen Umgebung einen Pi simuliert. Es wird beschrieben, wie man diese virtuelle Umgebung startet und darin arbeitet.

Das ist nicht das, was ich wollte.

Ich muss mein Programm auf einem echten Raspberry Pi ausführen, da ich echte Hardware benötige.

Aber ich denke, dass meine Frage fürs erste von below beantwortet wurde.
 

bw1faeh0

Uelzener Rambour
Registriert
06.01.08
Beiträge
370
Ok, also ich habe jetzt ein Xcode Projekt mit externen Buildtool angelegt. In dem Projekt habe ich mein Makefile angelegt.

Leider mag der Compiler nicht kompilieren:

Code:
 > make
gcc -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -marm -O3 -Wall -c main.c
cc1: error: unrecognized command line option "-mfpu=vfp"
cc1: error: unrecognized command line option "-mfloat-abi=hard"
cc1: error: unrecognized command line option "-marm"
main.c:1: error: bad value (arm1176jzf-s) for -mtune= switch

Er kennt leider nicht die command line Optionen und akzeptiert den arm1176jzf-s Wert nicht.
Ergo: lvm-gcc kann für meine Zielarchitektur nicht kompilieren?

Falls ja, muss also doch der richtige gcc her, oder?

Ich habe mal eine Weile google benutzt und davon gelesen, dass man sich den gcc für arm selber erstmal kompilieren muss. Ich bin am Überlegen, ob sich das lohnt...
 
Zuletzt bearbeitet:

Marcel Bresink

Hadelner Sommerprinz
Registriert
28.05.04
Beiträge
8.560
lvm-gcc kann für meine Zielarchitektur nicht kompilieren?
Falls ja, muss also doch der richtige gcc her, oder?

Das ist die falsche Vorstellung.
GCC ist, wie der Name schon sagt, eine Compiler Collection, die Werkzeuge bereitstellt, mit der man so gut wie für jeden Prozessor und für jedes Betriebssystem Code übersetzen kann. Wenn gcc bei einem Betriebssystem mitgeliefert wird, ist es standardmäßig aber immer so, dass nur Unterstützung für diejenigen Prozessoren eingebaut ist, für die dieses Betriebssystem gedacht ist. Das ist bei OS X Unterstützung für i386 und x86_64, früher auch ppc und ppc64, im "Mach-O"-Codeformat. Falls Du zusätzlich die Xcode-Erweiterung für iOS-Entwicklung installiert hast, unterstützt Xcode auch bereits "arm". Die Cross-Compiler-Auswahl geschieht in Xcode über die von Apple zusätzlich bereitgestellte Option "-arch", hier also "-arch arm".

Was Du hier jedoch zusätzlich bereitstellen musst, ist eine sogenannte Cross-Compiler-Toolchain, so dass Du auf OS X Code für die Architektur "arm" und das "eabi"-Executable-Format erzeugen kannst. Dieser Schritt muss immer gemacht werden, wenn Du auf einem Fremdsystem kompilieren willst, es sei denn, jemand anders hat Dir die Arbeit bereits abgenommen. Hier gibt es z.B. einen Erfahrungsbericht dazu.

Der bei OS X mitgelieferte llvm-gcc ist ansonsten eine sehr moderne, von Apple erweiterte gcc-Fassung, die alle Funktionen des gcc enthält.
 
  • Like
Reaktionen: below

thecasio

deaktivierter Benutzer
Registriert
20.08.11
Beiträge
108
Hey, schon etwas her aber hier mal mein Senf dazu:
Der qtCreator ist eine tolle IDE mit der man, wenn man ein beliebiges Projekt importiert, sein eigenes Makefile nehmen kann. Hierzu sind 2 -3 Einstellungen notwendig aber geht recht schnell. Ganz schön ist auch, dass man das Codefenster splitten kann und so beliebig viele Files nebeneinander oder untereinander haben kann.
Zu gcc, installier dir lieber die aktuelle Version 4.7 per Mac Ports. Ich hab keine Ahnung was das von Apple soll, dass sie ernsthaft Version 4.2 von 2008 (!!!) ausliefern. So sachen wie c++2011 gehn mit dem uralt Teil natürlich nicht...
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Zuletzt bearbeitet:

thecasio

deaktivierter Benutzer
Registriert
20.08.11
Beiträge
108
http://gcc.gnu.org/projects/cxx0x.html Ja ist experimental. Nichts desto trotz braucht man manche Features.
Ich sehe keinen Grund warum Apple wegen llvm nicht gcc aktualisiert. Auch wenn gcc bei Apple eben eine speziell angepasst Version ist, sollte ein Konzern dieser Größe in der Lage sei die Versionen von gcc mit zu gehen.
Zu Edit: Keine Ahnung, aber dafür hat man ja dann immer noch die alte Apple gcc Version drauf. Der Fragesteller hatte was mit einem Raspberry Pi vor, es gibt auch eine Welt jenseits von Xcode, iOS und OS X Projekten. Eine Installation hat dann nur zur Folge das g++ eben per g++-4.7 aufgerufen wird und die alte 4.2 Version noch immer mit g++. Wo soll da also ein Problem sein?
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
Ich sehe keinen Grund warum Apple wegen llvm nicht gcc aktualisiert.
Ein Wort: Aufwand.

Warum liefert Apple virtualenv und rbenv nicht mit? Warum wird beanstalkd nicht mitgeliefert? Apple kann halt nicht jeden Developer out-of-the-box glücklich machen.
Was Apple an Dev-Tools mitliefert ist schon klasse. Den Rest selber einzurichten, ist auch kein großes Problem.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Ich sehe keinen Grund warum Apple wegen llvm nicht gcc aktualisiert. Auch wenn gcc bei Apple eben eine speziell angepasst Version ist, sollte ein Konzern dieser Größe in der Lage sei die Versionen von gcc mit zu gehen.

Deine Argumentation ist ziemlich sinnlos.

* Offensichtlich können alle, die wirklich gcc brauchen, diesen auch über MacPorts oder anders installieren.

* Warum — genau — sollte Apple gcc weiter patchen? Nach meinen Informationen hatte Apple immer Streit mit den gcc Maintainern, welche von Apples Änderungen in den Main Branch von gcc übernommen werden sollen. Darauf hatte Apple keine Lust mehr, und daher haben sie alle Ressourcen auf llvm gerichtet. Da ist, de facto, Apple der Maintainer.
Vielleicht weisst Du mehr darüber als ich, aber clang bietet OS X und iOS Entwicklern (und die interessieren Apple an erster Stelle) alles, was sie brauchen. Zum Beispiel auch mit besserer C++11 Unterstützung als gcc (Jedenfalls das letzte mal, als ich nachgesehen hab). Und sehr, sehr viel bessere Fehlermeldungen als gcc.

Gruss

Alex