多平台C BLE依赖性问题

问题描述

我正在使用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)运行它时,它显示以下构建消息:

enter image description here

我试图验证是否安装了确切的库。当我针对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)进行链接。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...