NimBLE-Arduino: Undefined reference to 'ble_uuid_cmp'

Very excited about this port!

I’ve hit a weird snag trying to compile this. I’m running ESP-IDF 3.2 and trying to replace an existing BLE implementation. Compiling works, then I hit this during the GNU linker: (some paths snipped for line length)

LD build/soulmate-example.elf
build/nimble/libnimble.a(NimBLECharacteristic.o):(.literal._ZN20NimBLECharacteristic14handleGapEventEttP20ble_gatt_access_ctxtPv+0x0): undefined reference to `ble_uuid_cmp'
build/nimble/libnimble.a(NimBLECharacteristic.o):(.literal._ZN20NimBLECharacteristic14handleGapEventEttP20ble_gatt_access_ctxtPv+0x4): undefined reference to `os_mbuf_append'
build/nimble/libnimble.a(NimBLECharacteristic.o):(.literal._ZN20NimBLECharacteristic6notifyEb+0x14): undefined reference to `ble_hs_mbuf_from_flat'
build/nimble/libnimble.a(NimBLECharacteristic.o):(.literal._ZN20NimBLECharacteristic6notifyEb+0x18): undefined reference to `ble_gattc_indicate_custom'
build/nimble/libnimble.a(NimBLECharacteristic.o):(.literal._ZN20NimBLECharacteristic6notifyEb+0x1c): undefined reference to `ble_gattc_notify_custom'
build/nimble/libnimble.a(NimBLECharacteristic.o): In function `NimBLECharacteristic::handleGapEvent(unsigned short, unsigned short, ble_gatt_access_ctxt*, void*)':
nimble/src/NimBLECharacteristic.cpp:144: undefined reference to `ble_uuid_cmp'
nimble/src/NimBLECharacteristic.cpp:144: undefined reference to `os_mbuf_append'
build/nimble/libnimble.a(NimBLECharacteristic.o): In function `std::map<unsigned short, unsigned short, std::less<unsigned short>, std::allocator<std::pair<unsigned short const, unsigned short> > >::erase(unsigned short const&)':
nimble/src/NimBLECharacteristic.cpp:144: undefined reference to `ble_hs_mbuf_from_flat'
build/nimble/libnimble.a(NimBLECharacteristic.o): In function `NimBLECharacteristic::notify(bool)':
nimble/src/NimBLECharacteristic.cpp:144: undefined reference to `ble_gattc_indicate_custom'
build/nimble/libnimble.a(NimBLECharacteristic.o): In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()':
nimble/src/NimBLECharacteristic.cpp:144: undefined reference to `ble_gattc_notify_custom'
build/nimble/libnimble.a(NimBLEDescriptor.o): In function `NimBLEDescriptor::handleGapEvent(unsigned short, unsigned short, ble_gatt_access_ctxt*, void*)':
nimble/src/NimBLEDescriptor.cpp:134: undefined reference to `ble_uuid_cmp'
nimble/src/NimBLEDescriptor.cpp:138: undefined reference to `os_mbuf_append'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice9host_taskEPv+0x0): undefined reference to `nimble_port_run'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice9host_taskEPv+0x4): undefined reference to `nimble_port_freertos_deinit'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice6onSyncEv+0x10): undefined reference to `ble_hs_util_ensure_addr'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice12createServerEv+0x4): undefined reference to `ble_gatts_reset'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice12createServerEv+0x8): undefined reference to `ble_svc_gap_init'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice12createServerEv+0xc): undefined reference to `ble_svc_gatt_init'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice4initENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x18): undefined reference to `ble_hs_cfg'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice4initENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x24): undefined reference to `ble_store_util_status_rr'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice4initENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x30): undefined reference to `esp_nimble_hci_and_controller_init'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice4initENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x34): undefined reference to `nimble_port_init'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice4initENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x38): undefined reference to `ble_svc_gap_device_name_set'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice4initENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x3c): undefined reference to `ble_store_config_init'
build/nimble/libnimble.a(NimBLEDevice.o):(.literal._ZN12NimBLEDevice4initENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x40): undefined reference to `nimble_port_freertos_init'
build/nimble/libnimble.a(NimBLEDevice.o): In function `NimBLEDevice::host_task(void*)':
nimble/src/NimBLEDevice.cpp:659: undefined reference to `nimble_port_run'
nimble/src/NimBLEDevice.cpp:659: undefined reference to `nimble_port_freertos_deinit'
build/nimble/libnimble.a(NimBLEDevice.o): In function `NimBLEDevice::onSync()':
nimble/src/NimBLEDevice.cpp:659: undefined reference to `ble_hs_util_ensure_addr'
build/nimble/libnimble.a(NimBLEDevice.o): In function `NimBLEDevice::createServer()':
nimble/src/NimBLEDevice.cpp:659: undefined reference to `ble_gatts_reset'
nimble/src/NimBLEDevice.cpp:659: undefined reference to `ble_svc_gap_init'
nimble/src/NimBLEDevice.cpp:659: undefined reference to `ble_svc_gatt_init'
build/nimble/libnimble.a(NimBLEDevice.o): In function `NimBLEDevice::init(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
nimble/src/NimBLEDevice.cpp:659: undefined reference to `esp_nimble_hci_and_controller_init'
nimble/src/NimBLEDevice.cpp:659: undefined reference to `nimble_port_init'
nimble/src/NimBLEDevice.cpp:659: undefined reference to `ble_svc_gap_device_name_set'
nimble/src/NimBLEDevice.cpp:659: undefined reference to `ble_store_config_init'

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 35 (17 by maintainers)

Most upvoted comments

@h2zero I finally got around to setting this up - and it works great! Thank you so much!