This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How to link esb_gcc.a with mBed?

Hi,

I'm trying to link the static esb library (esb_gcc.a) with the mbed toolchain. Everthing seems fine until the last stage of the linking phase where my actual functions aren't resolved. The static library is found by gcc and I can't find out what's wrong. Is there any magic flags that I've missed or any other things?

Below is the output:

/usr/local/Cellar/cmake/3.0.1/bin/cmake -E cmake_link_script CMakeFiles/MY_APP.elf.dir/link.txt --verbose=1
arm-none-eabi-g++    -std=gnu++98 -fno-rtti -fno-exceptions -fno-threadsafe-statics    CMakeFiles/MY_APP.elf.dir/main.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/assert.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/board.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/error.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/exit.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/gpio.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/mbed_interface.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/pinmap_common.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/rtc_time.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/semihost_api.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/us_ticker_api.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/wait_api.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/BusIn.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/BusInOut.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/BusOut.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/CallChain.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/CAN.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/Ethernet.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/FileBase.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/FileLike.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/FilePath.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/FileSystemLike.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/FunctionPointer.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/I2C.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/I2CSlave.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/InterruptIn.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/InterruptManager.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/LocalFileSystem.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/RawSerial.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/retarget.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/Serial.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/SerialBase.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/SPI.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/SPISlave.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/Stream.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/Ticker.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/Timeout.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/Timer.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/common/TimerEvent.cpp.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/cmsis_nvic.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/system_nrf51822.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/analogin_api.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/gpio_api.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/gpio_irq_api.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/i2c_api.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/pinmap.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/port_api.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/pwmout_api.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/serial_api.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/sleep.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/spi_api.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/us_ticker.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/app_common/app_timer.c.o CMakeFiles/MY_APP.elf.dir/BLE_API/common/BLEDevice.cpp.o CMakeFiles/MY_APP.elf.dir/BLE_API/common/GapAdvertisingData.cpp.o CMakeFiles/MY_APP.elf.dir/BLE_API/common/GapAdvertisingParams.cpp.o CMakeFiles/MY_APP.elf.dir/BLE_API/common/GattService.cpp.o CMakeFiles/MY_APP.elf.dir/BLE_API/common/UUID.cpp.o CMakeFiles/MY_APP.elf.dir/BLE_API/services/DFUService.cpp.o CMakeFiles/MY_APP.elf.dir/BLE_API/services/UARTService.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nRF51822n.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nRF51Gap.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nRF51GattServer.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/btle/btle.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/btle/btle_advertising.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/btle/btle_gap.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/btle/custom/custom_helper.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/softdevice_handler.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/app_common/crc16.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/app_common/pstorage.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/ble/ble_advdata.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/ble/ble_advdata_parser.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/ble/ble_bondmngr.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/ble/ble_conn_params.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/ble/ble_debug_assert_handler.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/ble/ble_error_log.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/ble/ble_services/ble_srv_common.cpp.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/bootloader_dfu/bootloader_util_arm.c.o CMakeFiles/MY_APP.elf.dir/nRF51822/nordic/bootloader_dfu/dfu_app_handler.c.o CMakeFiles/MY_APP.elf.dir/mbed-src/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_GCC_ARM/startup_NRF51822.s.o  -o MY_APP.elf -T/Users/freber/dev/frankly/Aether/NapaNrf51/mbed-src/libraries/mbed/targets/cmsis/TARGET_NORDIC/TARGET_MCU_NRF51822/TOOLCHAIN_GCC_ARM/TARGET_MCU_NORDIC_16K/NRF51822.ld -Wl,--gc-sections -Wl,--wrap,main -Wl,-Map=MY_APP.map -mcpu=cortex-m0 -mthumb --specs=nano.specs -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys ../nRF51822/nordic/nrf-sdk/Lib/esb/gcc/esb_gcc.a 
CMakeFiles/MY_APP.elf.dir/main.cpp.o: In function `main':
main.cpp:(.text.startup.main+0x12): undefined reference to `nrf_esb_set_xosc_ctl(nrf_esb_xosc_ctl_t)'
main.cpp:(.text.startup.main+0x18): undefined reference to `nrf_esb_init(nrf_esb_mode_t)'
collect2: error: ld returned 1 exit status
make[2]: *** [MY_APP.elf] Error 1
make[1]: *** [CMakeFiles/MY_APP.elf.dir/all] Error 2
make: *** [all] Error 2
Related