Forum: Compiler & IDEs Frage zu Eclipse und C/C++


von Klaus E. (Gast)


Lesenswert?

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.

von Oliver (Gast)


Lesenswert?

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

von Klaus E. (Gast)


Lesenswert?

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.

von Oliver (Gast)


Lesenswert?

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

von Klaus E. (Gast)


Lesenswert?

> 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

von Oliver (Gast)


Lesenswert?

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

von Oliver (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.