gcc Linker macht mich verrückt

Gast #5110824
Lesenswert?

Ich habe ein mbed Projekt, das lässt sich mit 'mbed compile' übersetzen 
und linken. Das gleiche Projekt habe ich nach MCUXpresso (Nachfolger von 
LPCXpresso, Eclipse IDE) exportiert und benutze da die gleiche 
Toolchain, nur in mbed ist gcc Version 6 drin und in MCUX noch Version 
5.4.1.
In MCUX bekomme ich nun Linkerfehler, einige Wrapperfunktionen werden 
nicht gefunden. Diese sind aber im Objektfile mbed_retarget.o vorhanden.
Das Problem konnte ich jetzt einkreisen und auch beheben, verstehe aber 
noch nicht ganz warum. In der angehängten Textdatei habe ich die 
Linkerflags und inputs reingeschrieben, mit CR getrennt damit es besser 
lesbar ist. Die Flags sind gleich, bis auf die Reihenfolge und das ist 
das Problem. Im mbed build system kommen die Flags an das Ende und damit 
geht es, wenn ich das in MCUX auch mache ist es ebenfalls ok, default 
ist aber das die Flags vor die Inputfiles gesetzt werden. Ist es normal 
das der gcc Linker hier so zickig ist?
In der IDE kann ich das 'Command line pattern' für den Linker setzen, so 
ist es ok:
${COMMAND} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} ${FLAGS}
und so der default der in diesem Fall nicht funktioniert:
${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}
Angehängte Dateien:
Gast #5110864
Lesenswert?

Danke,
nach der oben beschriebenen Änderung der Aufrufzeile sieht das dann so 
aus und linkt auch ohne Fehler:
1
arm-none-eabi-c++ 
2
-o "mbed-classic-program.axf"  
3
./src/main.o  
4
...viele Objektfiles
5
-lmbed -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys 
6
-L"C:/Users/sn.DCIMS/Documents/MCUXpressoIDE_10.0.2_411/workspace/mbed-classic-program/mbed/fd96258d940d/TARGET_LPC11U37H_401/TOOLCHAIN_GCC_ARM" 
7
-DMBED_DEBUG -DMBED_TRAP_ERRORS_ENABLED=1 -DMBED_RTOS_SINGLE_THREAD 
8
--specs=nano.specs -Wl,-n   
9
-Wl,--start-group -lmbed -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys -Wl,--end-group 
10
-Xlinker -Map="mbed-classic-program.map" 
11
-Xlinker -print-memory-usage 
12
-Xlinker --gc-sections 
13
-Xlinker --wrap=main 
14
-Xlinker --wrap=_malloc_r 
15
-Xlinker --wrap=_free_r 
16
-Xlinker --wrap=_realloc_r 
17
-Xlinker --wrap=_memalign_r 
18
-Xlinker --wrap=_calloc_r 
19
-Xlinker --wrap=exit 
20
-Xlinker --wrap=atexit 
21
-mcpu=cortex-m0 -mthumb 
22
-T LPC11U37.ld

Diese Reihenfolge ist dann ok oder hat das wieder andere Seiteneffekte?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren