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

NRF5 SDK 14 GCC linking error

Hi,

For my new project, I copied the linker script and Makefile from examples/ble_peripheral/ble_app_uart/pca10040/s132/armgcc to a folder and changed the SDK dir and project dir accordingly.

When I run make, GCC successfully compiles all the sources and places the .o files in the _build/nrf52832_xxaa/. However, it fails at the linking stage. Here are the output of my make -n for last compilation and the final linking stage:

'/usr/bin/arm-none-eabi-gcc' -std=c99 -MP -MD -c -o _build/nrf52832_xxaa/nrf_sdh_soc.c.o ../submodules/sdk/components/softdevice/common/nrf_sdh_soc.c -O3 -g3 -DBOARD_PCA10040 -DCONFIG_GPIO_AS_PINRESET -DNRF52 -DNRF52832_XXAA -DNRF52_PAN_74 -DNRF_SD_BLE_API_VERSION=5 -DS132 -DSOFTDEVICE_PRESENT -DSWI_DISABLE0 -mcpu=cortex-m4 -mthumb -mabi=aapcs -Wall -Werror -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffunction-sections -fdata-sections -fno-strict-aliasing -fno-builtin -fshort-enums  -I../submodules/sdk/components/drivers_nrf/comp -I../submodules/sdk/components/libraries/experimental_cli -I../submodules/sdk/components/drivers_nrf/twi_master -I../submodules/sdk/components/ble/ble_services/ble_ancs_c -I../submodules/sdk/components/ble/ble_services/ble_ias_c -I../submodules/sdk/components/libraries/pwm -I../submodules/sdk/components/softdevice/s132/headers/nrf52 -I../submodules/sdk/components/libraries/usbd/class/cdc/acm -I../submodules/sdk/components/libraries/usbd/class/hid/generic -I../submodules/sdk/components/libraries/usbd/class/msc -I../submodules/sdk/components/libraries/usbd/class/hid -I../submodules/sdk/components/ble/ble_services/ble_lbs -I../submodules/sdk/components/ble/ble_services/ble_gls -I../submodules/sdk/components/libraries/fstorage -I../submodules/sdk/components/drivers_nrf/i2s -I../submodules/sdk/components/libraries/mutex -I../submodules/sdk/components/libraries/gpiote -I../submodules/sdk/components/libraries/experimental_log/src -I../submodules/sdk/components/drivers_nrf/gpiote -I../submodules/sdk/components/libraries/fifo -I../submodules/sdk/components/boards -I../submodules/sdk/components/libraries/experimental_memobj -I../submodules/sdk/components/drivers_nrf/common -I../submodules/sdk/components/ble/ble_advertising -I../submodules/sdk/components/ble/ble_services/ble_bas_c -I../submodules/sdk/components/ble/ble_services/ble_hrs_c -I../submodules/sdk/components/libraries/queue -I../submodules/sdk/components/libraries/pwr_mgmt -I../submodules/sdk/components/ble/ble_dtm -I../submodules/sdk/components/toolchain/cmsis/include -I../submodules/sdk/components/ble/ble_services/ble_rscs_c -I../submodules/sdk/components/drivers_nrf/uart -I../submodules/sdk/components/ble/common -I../submodules/sdk/components/ble/ble_services/ble_lls -I../submodules/sdk/components/drivers_nrf/wdt -I../submodules/sdk/components/libraries/bsp -I../submodules/sdk/components/ble/ble_services/ble_bas -I../submodules/sdk/components/libraries/experimental_section_vars -I../submodules/sdk/components/softdevice/s132/headers -I../submodules/sdk/components/ble/ble_services/ble_ans_c -I../submodules/sdk/components/libraries/slip -I../submodules/sdk/components/libraries/mem_manager -I../submodules/sdk/external/segger_rtt -I../submodules/sdk/components/libraries/usbd/class/cdc -I../submodules/sdk/components/drivers_nrf/hal -I../submodules/sdk/components/ble/ble_services/ble_nus_c -I../submodules/sdk/components/drivers_nrf/rtc -I../submodules/sdk/components/softdevice/common -I../submodules/sdk/components/ble/ble_services/ble_ias -I../submodules/sdk/components/libraries/usbd/class/hid/mouse -I../submodules/sdk/components/libraries/ecc -I../submodules/sdk/components/drivers_nrf/ppi -I../submodules/sdk/components/ble/ble_services/ble_dfu -I../submodules/sdk/external/fprintf -I../submodules/sdk/components/drivers_nrf/twis_slave -I../submodules/sdk/components/libraries/atomic -I../submodules/sdk/components -I../submodules/sdk/components/libraries/scheduler -I../submodules/sdk/components/libraries/experimental_log -I../submodules/sdk/components/ble/ble_services/ble_hts -I../submodules/sdk/components/drivers_nrf/delay -I../submodules/sdk/components/libraries/crc16 -I../submodules/sdk/components/drivers_nrf/timer -I../submodules/sdk/components/libraries/util -I../submodules/sdk/components/drivers_nrf/pwm -I../submodules/sdk/config -I../submodules/sdk/components/libraries/csense_drv -I../submodules/sdk/components/libraries/csense -I../submodules/sdk/components/libraries/balloc -I../submodules/sdk/components/libraries/low_power_pwm -I../submodules/sdk/components/libraries/hardfault -I../submodules/sdk/components/ble/ble_services/ble_cscs -I../submodules/sdk/components/libraries/uart -I../submodules/sdk/components/libraries/hci -I../submodules/sdk/components/libraries/usbd/class/hid/kbd -I../submodules/sdk/components/drivers_nrf/spi_slave -I../submodules/sdk/components/drivers_nrf/lpcomp -I../submodules/sdk/components/libraries/timer -I../submodules/sdk/components/drivers_nrf/rng -I../submodules/sdk/components/drivers_nrf/power -I../submodules/sdk/components/libraries/usbd/config -I../submodules/sdk/components/toolchain -I../submodules/sdk/components/libraries/led_softblink -I../submodules/sdk/components/drivers_nrf/qdec -I../submodules/sdk/components/ble/ble_services/ble_cts_c -I../submodules/sdk/components/drivers_nrf/spi_master -I../submodules/sdk/components/ble/ble_services/ble_nus -I../submodules/sdk/components/ble/ble_services/ble_hids -I../submodules/sdk/components/libraries/strerror -I../submodules/sdk/components/drivers_nrf/pdm -I../submodules/sdk/components/libraries/crc32 -I../submodules/sdk/components/libraries/usbd/class/audio -I../submodules/sdk/components/ble/peer_manager -I../submodules/sdk/components/drivers_nrf/swi -I../submodules/sdk/components/ble/ble_services/ble_tps -I../submodules/sdk/components/ble/ble_services/ble_dis -I../submodules/sdk/components/device -I../submodules/sdk/components/ble/nrf_ble_gatt -I../submodules/sdk/components/ble/nrf_ble_qwr -I../submodules/sdk/components/libraries/button -I../submodules/sdk/components/libraries/usbd -I../submodules/sdk/components/drivers_nrf/saadc -I../submodules/sdk/components/libraries/atomic_fifo -I../submodules/sdk/components/ble/ble_services/ble_lbs_c -I../submodules/sdk/components/ble/ble_racp -I../submodules/sdk/components/toolchain/gcc -I../submodules/sdk/components/libraries/fds -I../submodules/sdk/components/libraries/twi -I../submodules/sdk/components/drivers_nrf/clock -I../submodules/sdk/components/ble/ble_services/ble_rscs -I../submodules/sdk/components/drivers_nrf/usbd -I../submodules/sdk/components/ble/ble_services/ble_hrs
Linking target: _build/nrf52832_xxaa.out
"make" -s --no-print-directory -f "../submodules/sdk/components/toolchain/gcc/dump.mk" VARIABLE=CONTENT_TO_DUMP > _build/nrf52832_xxaa.in
'/usr/bin/arm-none-eabi-gcc' -O3 -g3 -mthumb -mabi=aapcs -L ../submodules/sdk/components/toolchain/gcc -Tble_app_uart_gcc_nrf52.ld -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Wl,--gc-sections --specs=nano.specs @_build/nrf52832_xxaa.in -Wl,-Map=_build/nrf52832_xxaa.map -o _build/nrf52832_xxaa.out

Full output: paste.gnome.org/pkorqpseu

My file layout is as below:

.
├── src
│   ├── ble_app_uart_gcc_nrf52.ld
│   ├── _build
│   │   ├── nrf52832_xxaa
│   │   ├── nrf52832_xxaa.in
│   │   └── nrf52832_xxaa.map
│   ├── main.c
│   └── Makefile
└── submodules
    └── sdk
        ├── components
        ├── config
        ├── documentation
        ├── examples
        ├── external
        ├── license.txt
        ├── nRF5x_MDK_8_14_1_IAR_NordicLicense.msi
        ├── nRF5x_MDK_8_14_1_Keil4_NordicLicense.msi
        ├── README.md
        └── svd

Full Makefile: paste.gnome.org/pfbghya5x

I am unable to figure out why the linker cant find the corresponding files as they are being compiled. I have not changed any source other than the Makefile. The examples in the sdk folder is building fine as well. Kindly help me find the issue

Related