6 years, 1 month ago.

Compile error of exported program in LPC Expresso:LPC1768

Board:LPC1768

mbed lib:161(121,88...)

Tool:LPC Xpresso 8.2.2.650

When I export mbed_blinky and compile it, an error occurs.

Error message.

\mbed\TARGET_LPC1768\TOOLCHAIN_GCC_ARM\LPC1768.ld:2: ignoring invalid character `#' in expression

collect2.exe: error: ld returned 1 exit status

Changing mbed.lib to 121, 88 etc. as a test has no effect.

Does anyone know the countermeasure method?

1 Answer

6 years, 1 month ago.

Hello Koyama-san,

This information might help.

Best regards,

Zoltan

Accepted Answer

Hello Zoltan

Thank you for your answer.

I changed lpc1768.ld with reference to the following URL.

https://os.mbed.com/questions/79943/Linking-error-with-CoIDE/

However, a new error was output.

On the IDE, "undefined reference to` memset 'is displayed in the following places.

/mbed/drivers/DigitalOut.h Line 54

DigitalOut.h

    DigitalOut(PinName pin) : gpio() {      //  <- Error "undefined reference to` memset "
        // No lock needed in the constructor
        gpio_init_out(&gpio, pin);
    }

Error Message

D:/_NXP/_WorkSpace822/mbed_blinky/mbed/TARGET_LPC1768/TOOLCHAIN_GCC_ARM/startup_LPC17xx.o: In function `Reset_Handler':
/home/jenkins/mbed_jenkins_node2/workspace/bm_wrap/1673/mbed-os/targets/TARGET_NXP/TARGET_LPC176X/device/TOOLCHAIN_GCC_ARM/startup_LPC17xx.S:150: undefined reference to `_start'
./main.o: In function `mbed::DigitalOut::DigitalOut(PinName)':
D:\_NXP\_WorkSpace822\mbed_blinky\mbed/drivers/DigitalOut.h:53: undefined reference to `memset'
D:/_NXP/_WorkSpace822/mbed_blinky/mbed/TARGET_LPC1768/TOOLCHAIN_GCC_ARM/mbed_board.o: In function `mbed_error_vfprintf':
/home/jenkins/mbed_jenkins_node2/workspace/bm_wrap/1673/mbed-os/platform/mbed_board.c:64: undefined reference to `vsnprintf'
D:/_NXP/_WorkSpace822/mbed_blinky/mbed/TARGET_LPC1768/TOOLCHAIN_GCC_ARM/serial_api.o: In function `serial_baud':
/home/jenkins/mbed_jenkins_node2/workspace/bm_wrap/1673/mbed-os/targets/TARGET_NXP/TARGET_LPC176X/serial_api.c:218: undefined reference to `abs'
D:/_NXP/_WorkSpace822/mbed_blinky/mbed/TARGET_LPC1768/TOOLCHAIN_GCC_ARM/serial_api.o: In function `serial_init':
/home/jenkins/mbed_jenkins_node2/workspace/bm_wrap/1673/mbed-os/targets/TARGET_NXP/TARGET_LPC176X/serial_api.c:144: undefined reference to `memcpy'
D:\_NXP\_WorkSpace822\mbed_blinky\mbed\TARGET_LPC1768\TOOLCHAIN_GCC_ARM\libmbed.a(mbed_error.o): In function `error':
/home/jenkins/mbed_jenkins_node2/workspace/bm_wrap/1673/mbed-os/platform/mbed_error.c:42: undefined reference to `exit'
D:\_NXP\_WorkSpace822\mbed_blinky\mbed\TARGET_LPC1768\TOOLCHAIN_GCC_ARM\libmbed.a(mbed_ticker_api.o): In function `update_present_time':
/home/jenkins/mbed_jenkins_node2/workspace/bm_wrap/1673/mbed-os/hal/mbed_ticker_api.c:144: undefined reference to `__aeabi_uldivmod'
/home/jenkins/mbed_jenkins_node2/workspace/bm_wrap/1673/mbed-os/hal/mbed_ticker_api.c:147: undefined reference to `__aeabi_uldivmod'
D:\_NXP\_WorkSpace822\mbed_blinky\mbed\TARGET_LPC1768\TOOLCHAIN_GCC_ARM\libmbed.a(mbed_ticker_api.o): In function `compute_tick':
/home/jenkins/mbed_jenkins_node2/workspace/bm_wrap/1673/mbed-os/hal/mbed_ticker_api.c:187: undefined reference to `__aeabi_uldivmod'
D:\_NXP\_WorkSpace822\mbed_blinky\mbed\TARGET_LPC1768\TOOLCHAIN_GCC_ARM\libmbed.a(mbed_ticker_api.o): In function `initialize':
/home/jenkins/mbed_jenkins_node2/workspace/bm_wrap/1673/mbed-os/hal/mbed_ticker_api.c:51: undefined reference to `__aeabi_uldivmod'
/home/jenkins/mbed_jenkins_node2/workspace/bm_wrap/1673/mbed-os/hal/mbed_ticker_api.c:59: undefined reference to `__aeabi_llsl'
collect2.exe: error: ld returned 1 exit status
make: *** [mbed_blinky.axf] Error 1

I am wondering how to fix it.

posted by sh koyama 13 Mar 2018

Unfortunately I have never used the LPC Xpresso IDE. However, "undefined reference to memset" means that a memset function was declared but never defined. I figured out that such function is defined in the mbed_stats.c file located in the platform folder of the mbed library. So make sure that such file is listed in the make file of your project in order to be compiled and linked into the final binary.

posted by Zoltan Hudak 17 Mar 2018

Hello Zoltan.

Thanks to you, the problem has been solved.

The link setting of the project has been changed as follows.

Project Propaties -> C/C++ Build -> Settings -> Tool Settings -> MCU C ++ Linker -> General

No startup or default libs (- nostdlib) [checked] -> [No check]

Compilation succeeded and the LED flashed.

I am very happy. Thank you!

posted by sh koyama 20 Mar 2018