Hallo, ich mache gerade meine mal wieder meine ersten Schritte mit einem EK (AT91SAM7X256). Ein Projekt in Eclipse war schnell aufgesetzt, Compilieren und Debuggen funktioniert auch prinzipiell (JLink). Das Problem: Ich hätte gerne C++ Support, welcher eigentlich im Makefile auch vorgesehen ist. Wenn man im angehangenen Projekt in der main.cpp die Objektinstanziierung mittels new ein- bzw. auskommentiert verursacht das einen Unterschied in der Binarygröße der einfach nur falsch sein kann (1K vs. 32K). Bemerkt habe ich das Problem auch erst, als sich der gdb-server von Segger (Größenlimitierung in der freien Version) beschwert hat ... Ich vermute mal, dass entweder in den ld-Files (aus einem Atmel-Projekt entnommen) oder dem makefile noch ein Bock ist - ich habe nur keine Ahnung wo :( Vielleicht findet ja einer der Experten mal 2 Minuten, um das Problem nachzuvollziehen. Gruß, Alex
Hallo, habe einmal testweise ein "getestetes Projekt" genommen und kann dort ebenfalls Probleme produzieren. Quelle: http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/index_at91.html#at91_cpp Der Autor zeigt dort ein Stück Code in dem auch eine Klasse verwendet wird, legt man die Klassenobjekte aber nicht statisch sondern auf dem Heap an knallt es dort beim Linken. undefined reference to `operator new(unsigned long) collect2: ld returned 1 exit status Lösen lässt sich das, indem man im Makefile die auskommentierte Zeile einkommentiert und den C-Compiler-Aufruf zum Linken darüber auskommentiert. %.elf: $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM) @echo @echo $(MSG_LINKING) $@ $(CC) $(THUMB) $(ALL_CFLAGS) $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM) --output $@ $(LDFLAGS) # $(CPP) $(THUMB) $(ALL_CFLAGS) $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ) $(CPPOBJ) $(CPPOBJARM) --output $@ $(LDFLAGS) Wenn man das macht, dann baut zwar das Projekt, jedoch läuft man dann in das im ersten Beitrag geschilderte Problem. Hier zum Vergleich die beiden Symboltabellen: Mit "new" in main: Creating Symbol Table: main.sym arm-elf-nm -n main.elf > main.sym Size after: main.elf : section size addr .text 40132 1048576 .ctors 8 1088708 .data 2096 2097152 .bss 2128 2099248 .comment 1242 0 .debug_aranges 3056 0 .debug_pubnames 6172 0 .debug_info 142842 0 .debug_abbrev 28859 0 .debug_line 28754 0 .debug_frame 6876 0 .debug_str 18155 0 .debug_loc 39794 0 .ARM.attributes 16 0 .debug_ranges 1992 0 Total 322122 Ohne "new" in main (also Originalprojekt): Creating Symbol Table: main.sym arm-elf-nm -n main.elf > main.sym Size after: main.elf : section size addr .text 17220 1048576 .ctors 8 1065796 .data 2088 2097152 .bss 56 2099240 .comment 1206 0 .debug_aranges 2944 0 .debug_pubnames 5951 0 .debug_info 140874 0 .debug_abbrev 28015 0 .debug_line 27996 0 .debug_frame 6692 0 .debug_str 17876 0 .debug_loc 39465 0 .ARM.attributes 16 0 .debug_ranges 1944 0 Total 292351 Irgendwie macht mich das etwas ratlos ... Alex
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.