Ссылка CMake undefined со статически связанными библиотеками - PullRequest
0 голосов
/ 04 августа 2020

Я новичок в CMake и пытаюсь изучить его. Я пытаюсь скомпилировать пример проекта из IDE с помощью CMake. Проблема возникает, когда я пытаюсь связать некоторые из предоставленных поставщиком stati c библиотек.

В основном проект:

PROJECT_DIR
  source
    main.c
  include
    main.h
  device
    familyfolder
      morefolders
  emlib
    src
      somesource.c
      em_core.c
      ...
    inc
      someheader.h
      em_core.h
      ...
  protocol
    bluetooth/lib
      EFR32BG1P
        libbluetooth.a
        librail.a
        libnvm3.a
        ...
    bluetooth/ble_stack
      src
        host
          gecko_bglib.c
        soc
          ...
      inc
        soc
          native_gecko.h
          someheader1.h
          someheader2.h
          ...
        host
          someheader3.h
        common
          bg_types.h (which is included by native_gecko.h)
          someheader4.h

CMakeLists.txt внутри root проекта

# Base EFM32 CMake file
#
# This can be used as is as a project base, or by adding the efm32-base
# repository as a submodule to another project, copying this CMakeLists file
# to the top level directory, and updating the BASE_LOCATION variable to reflect this
# change
#
## Copyright (c) 2016 Ryan Kurte
# This file is covered under the MIT license available at: https://opensource.org/licenses/MIT

###### Project Environment #####

# Set minimum CMake version
cmake_minimum_required(VERSION 2.8.4)

# Optional verbose mode, uncomment or pass in -DCMAKE_VERBOSE_MAKEFILE=ON
# set(CMAKE_VERBOSE_MAKEFILE ON)

set(BASE_LOCATION .)

# Set the compiler (must be prior to project setup)
include(${BASE_LOCATION}/toolchain/arm-gcc.cmake)

##### Project Setup #####

# Configure project and languages
project(efm32-test C CXX ASM)

# ${DEVICE} sets the target specific model name
if (NOT DEVICE)
    set(DEVICE EFR32BG1P232F256GM48)
    # set(DEVICE BGM13P22F512GA)
    set(BOARD BRD4100A)
    # set(BLE_LIB EFR32BG13P)
endif ()

# ${JLINK_DEVICE} device model setting specifically for JLink. (Defaults to ${DEVICE} when not set)
# set(JLINK_DEVICE EFM32TG11BXXXF128)

# When ${JLINK_SERVER_IP} is set, JLink will try to connect over IP to a JLink server
# set(JLINK_SERVER_IP 127.0.0.1)

# Set build
if (NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE DEBUG)
endif ()

##### Modules #####

# Libraries can be added to the LIBS variable
# or manually included here.

# Add base libs (emlib, CMSIS, device files)
include(${BASE_LOCATION}/toolchain/efm32-base.cmake)

add_subdirectory(${BASE_LOCATION}/cmsis)
add_subdirectory(${BASE_LOCATION}/emlib)
add_subdirectory(${BASE_LOCATION}/emdrv)
add_subdirectory(${BASE_LOCATION}/device)
add_subdirectory(${BASE_LOCATION}/protocol)
add_subdirectory(${BASE_LOCATION}/hardware)
add_subdirectory(${BASE_LOCATION}/radio)

# This is normally set in efm32-base.cmake, but libraries may modify it so set
# it after libraries/subdirectories have been added
set(CMAKE_EXE_LINKER_FLAGS "${COMMON_DEFINITIONS} -Xlinker -T${LINKER_SCRIPT} -Wl,-Map=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.map -Wl,--gc-sections -Wl,-v")

##### Files #####

# Add project headers
include_directories(${BASE_LOCATION}/include)

# Generate executable and link
add_executable(${PROJECT_NAME}
        source/main.c
        source/init_mcu.c
        source/init_board.c
        source/init_app.c
        source/gatt_db.c
        source/pti.c
        source/app.c
        source/application_properties.c)

efm32_configure_linker_addresses(${PROJECT_NAME})

target_link_libraries(${PROJECT_NAME} ${LIBS} emlib emdrv cmsis device radio)

# Link optional libraries if available
if (${HAS_HARDWARE})
    target_link_libraries(${PROJECT_NAME} hardware)
endif ()

if (${HAS_PROTOCOL})
    target_link_libraries(${PROJECT_NAME} protocol)
endif ()

##### Post build #####

# Add post build commands
include(${BASE_LOCATION}/toolchain/post-build.cmake)

# Add JLink commands
include(${BASE_LOCATION}/toolchain/jlink.cmake)

##### CMake debug prints #####
if (CMAKE_VERBOSE_MAKEFILE)
    print_debug_info()
endif()

CMakeLists.txt в emlib

# EFM32 Emlib CMake file
project(emlib)

# find . -name '*.c' | sort -u
add_library(${PROJECT_NAME}
        src/em_core.c
        src/alot_other_files.c)

target_include_directories(${PROJECT_NAME} PUBLIC inc)

target_link_libraries(${PROJECT_NAME} device protocol)

CMakeList.txt в протоколе

project(protocol)

string(TOLOWER ${DEVICE} DEVICE_L)

set(BLE_LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/bluetooth/ble_stack/linker/GCC/${DEVICE_L}.ld")

if (NOT EXISTS ${BLE_LINKER_SCRIPT})
    message("No bluetooth specific linker script defined, skipping protocol")
    set(HAS_PROTOCOL FALSE PARENT_SCOPE)
    return()
endif ()

set(HAS_PROTOCOL TRUE PARENT_SCOPE)

message("Found bluetooth specific linker script, using this instead:\n before: ${LINKER_SCRIPT}\n after: ${BLE_LINKER_SCRIPT}")

set(LINKER_SCRIPT ${BLE_LINKER_SCRIPT} PARENT_SCOPE)

add_library(${PROJECT_NAME}
            bluetooth/ble_stack/src/host/gecko_bglib.c)
#           bluetooth/ble_stack/src/soc/rtos_bluetooth.c)

target_include_directories(${PROJECT_NAME} PUBLIC
        bluetooth/ble_stack/inc/soc
        bluetooth/ble_stack/inc/host
        bluetooth/ble_stack/inc/common)
        
target_link_libraries(${PROJECT_NAME} PUBLIC
  ${CMAKE_CURRENT_SOURCE_DIR}/bluetooth/lib/EFR32BG1P/GCC/libmbedtls.a
  ${CMAKE_CURRENT_SOURCE_DIR}/bluetooth/lib/EFR32BG1P/GCC/libcoex.a
  ${CMAKE_CURRENT_SOURCE_DIR}/bluetooth/lib/EFR32BG1P/GCC/libpsstore.a
  emlib)
  
target_link_libraries(${PROJECT_NAME} PUBLIC
  ${CMAKE_CURRENT_SOURCE_DIR}/bluetooth/lib/EFR32BG1P/GCC/libbluetooth.a
  emlib)
  
target_link_libraries(${PROJECT_NAME} PUBLIC
  ${CMAKE_CURRENT_SOURCE_DIR}/bluetooth/lib/EFR32BG1P/GCC/librail.a
  emlib)
  
target_link_libraries(${PROJECT_NAME} PUBLIC
  ${CMAKE_CURRENT_SOURCE_DIR}/bluetooth/lib/EFR32BG1P/GCC/libnvm3.a
  emlib)

Запуск, если основной. c - включает в себя native_gecko.h является основным.

/* Board headers */
#include "init_mcu.h"
#include "init_board.h"
#include "init_app.h"
#include "ble-configuration.h"
#include "board_features.h"

/* Bluetooth stack headers */
#include "bg_types.h"
#include "native_gecko.h"
#include "gatt_db.h"

/* Libraries containing default Gecko configuration values */
#include "em_emu.h"
#include "em_cmu.h"

Когда я пытаюсь включить библиотеки stati c и связать их с зависимостью emlib

target_link_libraries(protocol PUBLIC
  ${CMAKE_CURRENT_SOURCE_DIR}/bluetooth/lib/EFR32BG1P/GCC/librail.a
  emlib)

в файле CMakeLists.txt в Папка протокола, я получаю

undefined reference to some function

, который должен быть в папке libs, а также предварительно компилируется.

Как и просили, более или менее полная часть ошибки. что на данный момент в основном является повторением ошибок зависимости библиотеки stati c.

protocol/bluetooth/lib/EFR32BG1P/GCC/libbluetooth.a(smp.c.obj): In function `smp_state_master_idle':
smp.c:(.text.smp_state_master_idle+0x298): undefined reference to `mbedtls_mpi_free'
protocol/bluetooth/lib/EFR32BG1P/GCC/libbluetooth.a(smp.c.obj): In function `smp_init':
smp.c:(.text.smp_init+0x4c): undefined reference to `mbedtls_ecp_group_init'
smp.c:(.text.smp_init+0x54): undefined reference to `mbedtls_ecp_group_load'
protocol/bluetooth/lib/EFR32BG1P/GCC/libbluetooth.a(sl_malloc.c.obj): In function `sl_malloc':
sl_malloc.c:(.text.sl_malloc+0x4): undefined reference to `CORE_EnterCritical'
sl_malloc.c:(.text.sl_malloc+0x14): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/libbluetooth.a(sl_malloc.c.obj): In function `sl_free':
sl_malloc.c:(.text.sl_free+0x4): undefined reference to `CORE_EnterCritical'
sl_malloc.c:(.text.sl_free+0x16): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/libbluetooth.a(vectors_efr32xg1x.c.obj): In function `vectors_register':
vectors_efr32xg1x.c:(.text.vectors_register+0x6): undefined reference to `CORE_SetNvicRamTableHandler'
protocol/bluetooth/lib/EFR32BG1P/GCC/libbluetooth.a(vectors_efr32xg1x.c.obj): In function `vectors_init':
vectors_efr32xg1x.c:(.text.vectors_init+0x1c): undefined reference to `CORE_InitNvicVectorTable'
vectors_efr32xg1x.c:(.text.vectors_init+0x24): undefined reference to `CORE_SetNvicRamTableHandler'
vectors_efr32xg1x.c:(.text.vectors_init+0x2c): undefined reference to `CORE_SetNvicRamTableHandler'
vectors_efr32xg1x.c:(.text.vectors_init+0x34): undefined reference to `CORE_SetNvicRamTableHandler'
vectors_efr32xg1x.c:(.text.vectors_init+0x3c): undefined reference to `CORE_SetNvicRamTableHandler'
vectors_efr32xg1x.c:(.text.vectors_init+0x44): undefined reference to `CORE_SetNvicRamTableHandler'
protocol/bluetooth/lib/EFR32BG1P/GCC/libbluetooth.a(vectors_efr32xg1x.c.obj):vectors_efr32xg1x.c:(.text.vectors_init+0x4c): more undefined references to `CORE_SetNvicRamTableHandler' follow
protocol/bluetooth/lib/EFR32BG1P/GCC/libbluetooth.a(bg_random_aes.c.obj): In function `aes_ctr_encrypt':
bg_random_aes.c:(.text.aes_ctr_encrypt+0x26): undefined reference to `mbedtls_aes_setkey_enc'
bg_random_aes.c:(.text.aes_ctr_encrypt+0x3a): undefined reference to `mbedtls_aes_crypt_ctr'
protocol/bluetooth/lib/EFR32BG1P/GCC/libbluetooth.a(bg_util_aes.c.obj): In function `bg_init_aes_context':
bg_util_aes.c:(.text.bg_init_aes_context+0x2): undefined reference to `mbedtls_aes_init'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rail_rf.o): In function `RAILINT_e0dfaecc04939a24e643c7a83fed51fa':
rail_rf.c:(.text.RAILInt_SetChannel+0x6): undefined reference to `CORE_EnterCritical'
rail_rf.c:(.text.RAILInt_SetChannel+0x28): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rail_rf_hal.o): In function `RAILINT_2d49aecfcb6d27d54075c2234a55d5e7':
rail_rf_hal.c:(.text.RFHAL_ConfigRxOptions+0x8c): undefined reference to `CORE_EnterCritical'
rail_rf_hal.c:(.text.RFHAL_ConfigRxOptions+0xb0): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rail_rf_hal.o): In function `RAILINT_3212ddcec5ace9cb56e8f1cb3ca8d33c':
rail_rf_hal.c:(.text.RFHAL_SetTimer+0x1a): undefined reference to `CORE_EnterCritical'
rail_rf_hal.c:(.text.RFHAL_SetTimer+0x5a): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rail_rf_hal.o): In function `RAILINT_39475387e0cb29596ec425b4cfae76fb':
rail_rf_hal.c:(.text.RFHAL_GetRxPacketInfo+0x1a): undefined reference to `CORE_EnterCritical'
rail_rf_hal.c:(.text.RFHAL_GetRxPacketInfo+0x30): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rail_calibration.o): In function `RAILINT_3f0b6529856489702e1c986caf70e7aa':
rail_calibration.c:(.text.RAILInt_PendCal+0x6): undefined reference to `CORE_EnterCritical'
rail_calibration.c:(.text.RAILInt_PendCal+0x14): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rfhal_bufc.o): In function `RAILINT_8309d0303dd52c35776f1b9d204e124b':
rfhal_bufc.c:(.text.BUFC_SetTxBuffer+0xa): undefined reference to `CORE_EnterCritical'
rfhal_bufc.c:(.text.BUFC_SetTxBuffer+0x26): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rfhal_bufc.o): In function `RAILINT_ea701df21b15aeabbf4f1b9be517a6fb':
rfhal_bufc.c:(.text.BUFC_RxBufferReset+0x2): undefined reference to `CORE_EnterCritical'
rfhal_bufc.c:(.text.BUFC_RxBufferReset+0x64): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rfhal_bufc.o): In function `RAILINT_e5f98ee4df05ffeec0898fd3dfcac7ef':
rfhal_bufc.c:(.text.BUFC_ReleaseRxPacket+0xa): undefined reference to `CORE_EnterCritical'
rfhal_bufc.c:(.text.BUFC_ReleaseRxPacket+0x2c): undefined reference to `CORE_ExitCritical'
rfhal_bufc.c:(.text.BUFC_ReleaseRxPacket+0xda): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rfhal_bufc.o): In function `RAILINT_ee328b192a18bb4569d7a778a9299c02':
rfhal_bufc.c:(.text.BUFC_GetRxPacketInfo+0xa): undefined reference to `CORE_EnterCritical'
rfhal_bufc.c:(.text.BUFC_GetRxPacketInfo+0x4c): undefined reference to `CORE_ExitCritical'
rfhal_bufc.c:(.text.BUFC_GetRxPacketInfo+0xfa): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rfhal_protimer.o): In function `RAILINT_fea48c6a0a5dcb75b3cd7e0e0188d110':
rfhal_protimer.c:(.text.PROTIMER_CCTimerStart+0xa): undefined reference to `CORE_EnterCritical'
rfhal_protimer.c:(.text.PROTIMER_CCTimerStart+0x1c): undefined reference to `CORE_ExitCritical'
rfhal_protimer.c:(.text.PROTIMER_CCTimerStart+0x44): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rfhal_protimer.o): In function `RAILINT_6d18a45e267fa35e89a132429cb09fd9':
rfhal_protimer.c:(.text.PROTIMER_CheckCcaReallyFailed+0x4): undefined reference to `CORE_EnterAtomic'
rfhal_protimer.c:(.text.PROTIMER_CheckCcaReallyFailed+0xa2): undefined reference to `CORE_ExitAtomic'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rfhal_radio.o): In function `RAILINT_49c1638648869baaf18ca93f541e7dd3':
rfhal_radio.c:(.text.RADIO_GetRssi+0xc): undefined reference to `CORE_EnterCritical'
rfhal_radio.c:(.text.RADIO_GetRssi+0x36): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rfhal_rtccsync.o): In function `RAILINT_b3ae6c670ad30ab880888943a58faee0':
rfhal_rtccsync.c:(.text.RTCCSYNC_PreSleep+0x12): undefined reference to `CORE_EnterCritical'
rfhal_rtccsync.c:(.text.RTCCSYNC_PreSleep+0xda): undefined reference to `CORE_ExitCritical'
rfhal_rtccsync.c:(.text.RTCCSYNC_PreSleep+0x1cc): undefined reference to `CORE_ExitCritical'
rfhal_rtccsync.c:(.text.RTCCSYNC_PreSleep+0x21a): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rfhal_rtccsync.o): In function `RAILINT_b59eec27e1e4352a569b2404f6e35a1b':
rfhal_rtccsync.c:(.text.RTCCSYNC_PostWakeUp+0x24): undefined reference to `CORE_EnterCritical'
rfhal_rtccsync.c:(.text.RTCCSYNC_PostWakeUp+0xe6): undefined reference to `CORE_ExitCritical'
rfhal_rtccsync.c:(.text.RTCCSYNC_PostWakeUp+0x124): undefined reference to `CORE_EnterCritical'
rfhal_rtccsync.c:(.text.RTCCSYNC_PostWakeUp+0x166): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(rfhal_rand.o): In function `RAILINT_06d3d408af442bc7f395514867b33be3':
rfhal_rand.c:(.text.RFRAND_GetRadioEntropy+0x36): undefined reference to `CORE_EnterCritical'
rfhal_rand.c:(.text.RFRAND_GetRadioEntropy+0xa0): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(generic_phy.o): In function `RAILINT_5f7114cf3ce03d53615d89fe78177694':
generic_phy.c:(.text.GENERIC_PHY_ConfigureRollbackReporting+0x4): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_ConfigureRollbackReporting+0x46): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(generic_phy.o): In function `RAILINT_933bfa2aa7cb94f384fd9482dc3d4942':
generic_phy.c:(.text.RADIO_RACRxAbort+0x2): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.RADIO_RACRxAbort+0x2c): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(generic_phy.o): In function `RAILINT_661cd5b832e0dc684eca55cf65a1a4bd':
generic_phy.c:(.text.GENERIC_PHY_DisableRadioIrqs+0x2): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_DisableRadioIrqs+0x90): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(generic_phy.o): In function `RAILINT_549ae7c6edbff50f2340752aad688b72':
generic_phy.c:(.text.GENERIC_PHY_ConfigureEvents+0x2e): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_ConfigureEvents+0x60): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_ConfigureEvents+0xa2): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_ConfigureEvents+0x2ec): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_ConfigureEvents+0x5c): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(generic_phy.o): In function `RAILINT_cc007e4287f0aeed09681d7e13e3e8eb':
generic_phy.c:(.text.GENERIC_PHY_PacketTx+0x2): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_PacketTx+0x1c): undefined reference to `CORE_ExitCritical'
generic_phy.c:(.text.GENERIC_PHY_PacketTx+0x30): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(generic_phy.o): In function `RAILINT_0398a16a4bf50dbcafa68c979c0efcc9':
generic_phy.c:(.text.GENERIC_PHY_SchedulePacketRx+0x14): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_SchedulePacketRx+0x2a): undefined reference to `CORE_ExitCritical'
generic_phy.c:(.text.GENERIC_PHY_SchedulePacketRx+0x5e): undefined reference to `CORE_ExitCritical'
generic_phy.c:(.text.GENERIC_PHY_SchedulePacketRx+0xd0): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(generic_phy.o): In function `RAILINT_c508b1e616a62d61aefaf693649607f1':
generic_phy.c:(.text.GENERIC_PHY_SchedulePacketTx+0x4): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_SchedulePacketTx+0x1e): undefined reference to `CORE_ExitCritical'
generic_phy.c:(.text.GENERIC_PHY_SchedulePacketTx+0x5a): undefined reference to `CORE_ExitCritical'
generic_phy.c:(.text.GENERIC_PHY_SchedulePacketTx+0x64): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(generic_phy.o): In function `RAILINT_26621d98bc1a2dc74b7093edea89d850':
generic_phy.c:(.text.GENERIC_PHY_ResetRxFifo+0x4): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_ResetRxFifo+0x1a): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(generic_phy.o): In function `RAILINT_232b67d119ad2a1a23589ef6ecfa72b8':
generic_phy.c:(.text.GENERIC_PHY_RadioIdle+0x8): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_RadioIdle+0x26): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(generic_phy.o): In function `FRC_IRQHandler':
generic_phy.c:(.text.FRC_IRQHandler+0x436): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.FRC_IRQHandler+0x466): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/librail.a(generic_phy.o): In function `RAILINT_1446b673acaddfc4b02974cda9fee981':
generic_phy.c:(.text.GENERIC_PHY_SetFeatures+0x6): undefined reference to `CORE_EnterCritical'
generic_phy.c:(.text.GENERIC_PHY_SetFeatures+0x16): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/libnvm3.a(nvm3_lock.c.obj): In function `nvm3_lockBegin':
nvm3_lock.c:(.text.nvm3_lockBegin+0x2): undefined reference to `CORE_EnterCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/libnvm3.a(nvm3_lock.c.obj): In function `nvm3_lockEnd':
nvm3_lock.c:(.text.nvm3_lockEnd+0x4): undefined reference to `CORE_ExitCritical'
protocol/bluetooth/lib/EFR32BG1P/GCC/libnvm3.a(nvm3_hal_flash.c.obj): In function `nvm3_halFlashWriteWords':
nvm3_hal_flash.c:(.text.nvm3_halFlashWriteWords+0xa): undefined reference to `MSC_WriteWord'
protocol/bluetooth/lib/EFR32BG1P/GCC/libnvm3.a(nvm3_hal_flash.c.obj): In function `nvm3_halFlashClose':
nvm3_hal_flash.c:(.text.nvm3_halFlashClose+0x0): undefined reference to `MSC_Deinit'
protocol/bluetooth/lib/EFR32BG1P/GCC/libnvm3.a(nvm3_hal_flash.c.obj): In function `nvm3_halFlashOpen':
nvm3_hal_flash.c:(.text.nvm3_halFlashOpen+0x2): undefined reference to `MSC_Init'
protocol/bluetooth/lib/EFR32BG1P/GCC/libnvm3.a(nvm3_hal_flash.c.obj): In function `nvm3_halFlashPageErase':
nvm3_hal_flash.c:(.text.nvm3_halFlashPageErase+0x4): undefined reference to `MSC_ErasePage'
collect2: error: ld returned 1 exit status
CMakeFiles/efm32-test.dir/build.make:290: recipe for target 'efm32-test' failed
make[2]: *** [efm32-test] Error 1
CMakeFiles/Makefile2:261: recipe for target 'CMakeFiles/efm32-test.dir/all' failed
make[1]: *** [CMakeFiles/efm32-test.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...