Forum: Compiler & IDEs Eclipse und ARM GCC


von Bert (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Kollegen

eigentlich bin ich gar kein Freund von Eclipse, aber ich habe bisher 
ausser ddd keinen Debugger gefunden, welcher meinen Ansprüchen genügt. 
Leider ist auch ddd etwas buggy und ich möchte etwas moderneres 
benutzen. Also habe ich mich mal an Eclipse versucht!

Als Testprojekt verwende ich das STM32F407 Beispiel von hier:
http://emb4fun.de/arm/examples/index.html

Das Makefile habe ich allerdings angepasst, siehe Anhang. Grund: ich bin 
sehr faul und möchte nicht von Hand meine Source-Files ins Makefile 
eintragen, sondern ich möchte, dass dieses bitteschön die C-Files 
automatisch findet und compiliert. Das funktioniert in der Konsole 
perfekt!

Nun habe ich das Projekt in Eclipse zu importieren versucht (habe mir 
Eclipse for C/C++ developers runtergeladen). Dann wollte ich das Projekt 
drt drin bearbeiten, also habe ich versucht, ein 'Makefile project' zu 
importieren, was mir zwar auch gelungen ist, aber Eclipse ist nicht in 
der Lage, das Makefile auszuführen. Ich weiss, dass ich es vor Jahren 
mal geschafft habe, aber weil ich Eclipse so einen Mist fand, habe ich 
das damals wieder verworfen. (Ich hoffe dass Eclipse in der Zwischenzeit 
besser geworden ist, daher möchte ich es nochmals versuchen :-) ).

Könnt ihr mir bitte auf die Sprünge helfen, wo ich rum schrauben muss, 
damit ich mein Projekt in Eclipse compiliert bekomme und auch debuggen 
kann?

von hp-freund (Gast)


Lesenswert?

Bert schrieb:
> habe mir Eclipse for C/C++ developers runtergeladen

Du hast aber nicht das plugin vergessen oder?

http://gnuarmeclipse.livius.net/blog/

von hp-freund (Gast)


Lesenswert?

und hoffentlich auch nicht den arm compiler ;-)

von 900ss (900ss)


Lesenswert?

Wenn das Makefile in der Console funktioniert, braucht man kein Plugin. 
Aber man muss die Dateien dann händisch eintragen :)

Wenn man ein Cross-Compile-Projekt anlegt, geht es auch ohne Plugin und 
man muss die Dateien nicht händisch irgendwo eintragen, nur dem Projekt 
hinzufügen. Compiler /Linker - Optionen dann nicht vergessen.

Mit Plugin kann das (muss nicht) etwas einfacher sein. Da der TO aber 
(so wie er schreibt) faul ist, beschäftigt er sich auch nicht mit den 
Werkzeugen um sie zu verstehen. Dann sind die natürlich Mist, weil sie 
nicht das machen, was man erwartet ;)

von Dr. Sommer (Gast)


Lesenswert?

lass doch das selbstgeschriebene Makefile weg und lass eclipse die 
Makefiles automatisch erzeugen, indem du ein Projekt für den STM32 
anlegst (nachdem du das GNU ARM Eclipse Plugin installiert hast). Das 
ist am einfachsten und bietet dir sogar spezifischen Debugging-Support 
für zB den J-Link.

von Bert (Gast)


Lesenswert?

Ihr versteht mich falsch. Ich meine das so: oft sieht man, wie Leute 
ihre *.c Dateien im Makefile in einer Liste eintragen. Ich habe das 
Makefile mittels Wildcards so modifiziert, dass es alle *.c-Files, die 
im Unterordner /src liegen, dem Compiler übergibt. Dieser ist bei mir 
der arm-none-eabi-gcc. Insofern habe ich mich also sehr wohl mit den 
Tools auseinandergesetzt und sie verstanden, aber eben die 
Console-Tools, und nicht Eclipse, darum frage ich ja ;-)

Wenn ich mit der rechten Maustaste auf mein Project in Eclipse klicke 
und sage "Build", dann kommt in der Eclipse-Konsole die Meldung 
"Successfully built" (oder ähnlich, kanns grad nicht sagen weil ich grad 
nicht am PC sitze) aber es kommt nicht wie erwartet die Ausgabe, die 
mein Makefile liefern würde, wenn es denn ausgeführt würde.

Die Frage ist: was muss ich unternehmen, dass das aus Eclipse heraus 
auch funktioniert. Nicht mit irgend einem generierten Startupcode und 
Linkerscript, sondern die gebe ich vor, und Eclipse soll bitteschön 
die verwenden. Wie das Makefile zustande kommt, nun gut, das soll 
Eclipse meinetwegen generieren, aber ich weiss nicht, wie ich das 
einstellen kann.

von Dr. Sommer (Gast)


Lesenswert?

Bert schrieb:
> Ihr versteht mich falsch. Ich meine das so: oft sieht man, wie Leute
> ihre *.c Dateien im Makefile in einer Liste eintragen. Ich habe das
> Makefile mittels Wildcards so modifiziert, dass es alle *.c-Files, die
> im Unterordner /src liegen, dem Compiler übergibt.
Aber wozu? Ist doch viel zu kompliziert, eclipse kann das automatisch. 
Eclipse kompiliert automatisch alle Sourec Dateien im Projekt.
> auch funktioniert. Nicht mit irgend einem generierten Startupcode und
> Linkerscript
Die generiert eclipse auch nicht.
> sondern die gebe ich vor, und Eclipse soll bitteschön
> die verwenden.
Tut es auch. Denn die haben überhaupt nichts mit makefiles zu tun.
> Wie das Makefile zustande kommt, nun gut, das soll
> Eclipse meinetwegen generieren, aber ich weiss nicht, wie ich das
> einstellen kann.
Indem du ein stinknormales C/C++ Projekt anlegst, oder ein STM32 C/C++ 
Projekt.

von Bert (Gast)


Lesenswert?

Hallo

alles klar.

Ich hab jetzt ein normales Hello World Cross GCC Projekt angelegt. 
Compilerpräfix etc. ist korrekt eingestellt. Allerdings weiss ich jetzt 
nicht, wo ich das Linkerscript angeben kann?

Und er macht auch was komisches mit der C-Library, denn er sucht die 
stubs für _atexit(), _read() und so weiter.

von 900ss (900ss)


Lesenswert?

Bert schrieb:
> Hallo
>
> alles klar.
>
> Ich hab jetzt ein normales Hello World Cross GCC Projekt angelegt.
> Compilerpräfix etc. ist korrekt eingestellt. Allerdings weiss ich jetzt
> nicht, wo ich das Linkerscript angeben kann?

Du kannst bei den Projekteinstellungen
Project->Properties->C/C++Build->Settings->CrossLinker->Miscellaneous

Flags für den Linker angeben. Also auch das Linkerscript (siehe LD 
Doku).


> Und er macht auch was komisches mit der C-Library, denn er sucht die
> stubs für _atexit(), _read() und so weiter.

Dafür müssttest du ein syscalls.c Modul haben, wenn es vorher 
funktioniert hat. Oder eben ein anderes Modul, in dem diese Funktionen 
enthalten sind.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.