首页 > 解决方案 > 多平台 C BLE 依赖问题

问题描述

我正在使用bluezC构建一个应用程序。

我使用 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 开发人员为目标时编辑代码时,它可以正确看到所有蓝牙库(蓝牙/hci/hci_lib)。

我运行的代码来自 Edison-Playground

标签: cbluetoothraspberry-piclionbluez

解决方案


set (CMAKE_C_FLAGS "-lbluetooth")将库放在可执行文件之前,这会导致顺序无效并且链接器找不到您的符号。

根本不要CMAKE_C_FLAGS直接使用,忘记它的存在 - 改用各种add_*工具,如add_compile_options, add_link_options. 用于target_link_libraries(bluetooth_client PRIVATE bluetooth)链接。


推荐阅读