Hello, I'm trying to compile a program for a stm32f4-discovery board using code sourcery g++ lite and I'm having a peculiar problem. My program uses the "new operator" and I had to implement the _sbrk function. Here is the linker command: arm-none-eabi-g++ -mthumb -mcpu=cortex-m4 -march=armv7e-m -mfix-cortex-m3-ldrd -o main.elf -O2 -g -Wall -Werror -Wl,-T/home/li/dev/arm_rc/ld/cs3.ld main.o start_cs3.o newlib_stubs.o _sbrk is in newlib_stubs.c (.o). Knowing that order of the files on the command line counts, I tried moving newlib_stubs.o as first/last argument but with no success. What could be wrong? Note that the C version of the program that uses malloc is compiling just fine (arm-none-eabi-gcc instead of arm-none-eabi-g++) Thanks, Liviu
Liviu Vasut wrote: > Note that the C version of the program that uses malloc is compiling > just fine (arm-none-eabi-gcc instead of arm-none-eabi-g++) Did you perhaps compile newlibs_stubs with the C++ compiler, so the names got their C++ mangling? Try running arm-none-eabi-nm on the file newlib_stubs.o, and see which symbol it is reporting for _sbrk. Btw., the order of explicitly mentioned .o files on the commandline (almost) doesn't matter. It's only the order of library files that matters.
Thanks Jörg, you made my day! That was indeed the problem and now it's solved. I learned something today (again) :).
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.