Hallo alle zusammen, ich habe eine Frage bei der ich leider nicht weiter komme. Ich habe ein paar C/C++ Sourcen die ich für ARM cross-kompilieren muss. Beispielprojekte funktionieren einwandfrei. Jetzt habe ich jedoch folgende Problemstellung: Ich habe 2 Projekte (bevor jemand fragt - es geht leider nicht anders): A) Dieses Projekt kann ich kompilieren und ich erhalte eine calculator.o und die dazugehörige calculator.h B) Ich möchte eine Methode aus calculator.h in diesem Projekt verwenden. Leider weiß ich nicht was ich bei Eclipse einstellen muss, dass dieser das ganze richtig erkennt. Ich kann leider nicht die Sourcen von A) direkt einbinden. Kann mir jemand sagen was ich in den Projekt-Properties unter C/C++ Build --> Settings alles einstellen muss? Es wäre prima, wenn mir jemand weiterhelfen könnte. Danke und Gruß Klaus E.
project properties->C/C++ Build->Settings, Tab "tool settings" Abschnitt Linker->miscellaneous, other objects dort calculator.o hinzufügen. Das wird dann beim linken mit dazugelinkt. Oliver
Hallo Oliver, danke für deine Info. Jetzt kann ich die .o-Files mit einbeziehen: g++.exe -oB C:\eclipse\workspace\A\Debug\src\calculator.o Eine Frage/Problem habe ich allerdings noch: Neuerdings (speziell seitdem ich die .o eingebunden habe) zieht er mir meine normalen .cpp-Dateien nicht mehr in den Kompilierungsprozess mit ein sondern versucht nur aus meiner calculator.o ein Programm zu bauen. Dadurch, dass es da keine main gibt bekomme ich eben folgende Fehlermeldung: In function `_start': : undefined reference to `main' Was muss ich machen, damit er auch die anderen Dateien mit einkompiliert? Gruß Klaus E.
Klaus E. schrieb: > g++.exe -oB C:\eclipse\workspace\A\Debug\src\calculator.o ??? Klaus E. schrieb: > Was muss ich machen, damit er auch die anderen Dateien mit > einkompiliert? ??? Nutzt du Eclipse, mit dem ARM-Plugin, oder rufst du den Compiler von der Kommandozeile aus auf? Oliver
> Nutzt du Eclipse, mit dem ARM-Plugin, oder rufst du den Compiler von der > Kommandozeile aus auf? Ich bin im Moment auf beiden Schienen am probieren, da ich nicht weiter komme. Eclipse mit ARM plugin will nicht mehr meine cpp-Dateien mit kompilieren. Eclipse tut so als ob diese nicht existieren. Auf der Konsole versuche ich das ganze mit folgendem Befehl: arm-unknown-linux-gnu-g++.exe -Wall -oB b1.cpp b2.cpp b3.cpp b4.cpp C:\eclipse\workspace\A\Debug\src\calculator.o b1.cpp enthält meine main. A besteht aus calculator.c und calculator.h sowie einer anderen mymain.c die eine main enhält, mymain.o jedoch nicht in B verwendet wird. calculator.c beinhaltet eine Methode getNumber(), deren Methodenkopf auch in calculator.h eingefügt ist. calculator.h habe ich sogar mit in den src-Ordner von B geworfen und in b1.cpp mittels #include "calcuator.h" eingebunden. Beim kompillieren bekomme ich jedoch die Fehlermeldung, das die Methode getNumber() nicht gefunden wurde: [...]ccwD2DZA.o(.text+0x40): In function `go()': : undefined reference to `getNumber()' Ich bin relativ ratlos was ich falsch mache. Gruß Klaus
Klaus E. schrieb: > Ich bin relativ ratlos was ich falsch mache. Na ja, frank und frei gesprochen, versuchst du Dinge per trial and error, die sich nicht per trial and error lösen lassen. Deine gezeigte Compilerzeile ist, nun ja, bullshit. Entweder wühlst du dich durchrs WWW, und liest solange, bis du den Aufruf vom Compiler und Linker mit seinen Optionen verstanden hast, (besser wäre es allerdings, du suchst dir funktionierende makefiles, und passt die an), oder du findest raus, warum Eclipse "plötzlich" deine .cpp-files ignoriert. Am besten startest du da mit einem neuen, leeren Projekt. Oliver
Nachtrag: Ein sehr schöner Einstieg ins Thema (ohne Eclipse) ist das hier: http://www.state-machine.com/arm/Building_bare-metal_ARM_with_GNU.pdf Keine Angst, in drei- bis vier Wochen bist du da durch ;) Oliver
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.