多平台 C BLE 依赖问题
Multiplatform C BLE dependency issue
我正在使用 bluez
在 C 中构建一个应用程序。
我使用 CLion 作为我的开发环境,有两个目标 - raspberry Pi 4B 和我的 Linux 机器。
这是我的CMakeLists.txt
cmake_minimum_required(VERSION 3.13)
project(bluetooth_client C)
set(CMAKE_C_STANDARD 11)
set (CMAKE_C_FLAGS "-lbluetooth")
add_executable(bluetooth_client main.c)
当我 运行 以 raspberry pi(又名远程主机)为目标时,它工作正常。当我 运行 它以本地主机为目标时(Linux 在英特尔上)它显示此构建消息:
我试图验证我是否安装了准确的库。当我针对 Linux 开发人员编辑代码时,它可以正确地看到所有蓝牙库 (bluetooth/hci/hci_lib)。
我的代码运行来自Edison-Playground
set (CMAKE_C_FLAGS "-lbluetooth")
将库放在可执行文件之前,这会导致无效顺序并且链接器找不到您的符号。
根本不要直接使用 CMAKE_C_FLAGS
,忘记它的存在 - 使用各种 add_*
工具,例如 add_compile_options
、add_link_options
。使用 target_link_libraries(bluetooth_client PRIVATE bluetooth)
进行链接。
我正在使用 bluez
在 C 中构建一个应用程序。
我使用 CLion 作为我的开发环境,有两个目标 - raspberry Pi 4B 和我的 Linux 机器。
这是我的CMakeLists.txt
cmake_minimum_required(VERSION 3.13)
project(bluetooth_client C)
set(CMAKE_C_STANDARD 11)
set (CMAKE_C_FLAGS "-lbluetooth")
add_executable(bluetooth_client main.c)
当我 运行 以 raspberry pi(又名远程主机)为目标时,它工作正常。当我 运行 它以本地主机为目标时(Linux 在英特尔上)它显示此构建消息:
我试图验证我是否安装了准确的库。当我针对 Linux 开发人员编辑代码时,它可以正确地看到所有蓝牙库 (bluetooth/hci/hci_lib)。
我的代码运行来自Edison-Playground
set (CMAKE_C_FLAGS "-lbluetooth")
将库放在可执行文件之前,这会导致无效顺序并且链接器找不到您的符号。
根本不要直接使用 CMAKE_C_FLAGS
,忘记它的存在 - 使用各种 add_*
工具,例如 add_compile_options
、add_link_options
。使用 target_link_libraries(bluetooth_client PRIVATE bluetooth)
进行链接。