问题描述
我正在使用C中的bluez
构建应用。
我将CLion用作具有两个目标的开发环境-树莓派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)
当我针对树莓派(也称为远程主机)运行此程序时,它可以正常工作。当我针对本地主机(intel的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)
进行链接。