c - 多平台 C BLE 依赖问题
问题描述
我正在使用bluez
C构建一个应用程序。
我使用 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
解决方案
set (CMAKE_C_FLAGS "-lbluetooth")
将库放在可执行文件之前,这会导致顺序无效并且链接器找不到您的符号。
根本不要CMAKE_C_FLAGS
直接使用,忘记它的存在 - 改用各种add_*
工具,如add_compile_options
, add_link_options
. 用于target_link_libraries(bluetooth_client PRIVATE bluetooth)
链接。
推荐阅读
- php - 仅当 isAdmin() 为真时才显示 @click="" 而不重复我自己。获取语法错误
- sql-server - 如何将单列的正负值分离到不同的列
- jenkins - 如何解决 Kubernetes 中 pod 的问题“pod has unbound immediate persistentvolumeclaims”
- java - 带有 JSP 和 Webpack 前端的 Struts 和 Jersey Servlet
- reactjs - onNavigationStateChange 在设备 iphone 中不起作用,但在模拟器中起作用
- php - 如何将 div 类添加到站点的 header.php 文件中,以便可以将徽标插入站点的主菜单?
- c# - 我如何反序列化带有花括号的对象列表?
- java - 寻找已弃用方法的替代方法
- qt - 为转发器提供一组对象
- ios - 以编程方式显示导航栏的 UISearchController