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?
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 ;)
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.
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.
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.
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.
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.