Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
#include <bluetooth/hci_lib.h>
int main() {
// 获取第一个可用的蓝牙适配器ID
int dev_id = hci_get_route(NULL);
if (dev_id < 0) {
perror("没有找到蓝牙适配器");
exit(1);
}
// 打开蓝牙设备
int sock = hci_open_dev(dev_id);
if (sock < 0) {
perror("无法打开蓝牙适配器");
exit(1);
}
printf("正在扫描蓝牙设备...\n");
// 设置扫描参数
int max_rsp = 255;
int flags = IREQ_CACHE_FLUSH;
inquiry_info *ii = (inquiry_info*)malloc(max_rsp * sizeof(inquiry_info));
// 开始扫描
int num_rsp = hci_inquiry(dev_id, 8, max_rsp, NULL, &ii, flags);
if (num_rsp < 0) {
perror("扫描失败");
close(sock);
exit(1);
}
char addr[19] = {0};
char name[248] = {0};
printf("找到 %d 个设备:\n", num_rsp);
printf("地址\t\t\t名称\n");
// 遍历并显示找到的设备
for (int i = 0; i < num_rsp; i++) {
ba2str(&(ii+i)->bdaddr, addr);
memset(name, 0, sizeof(name));
// 尝试获取设备名称
if (hci_read_remote_name(sock, &(ii+i)->bdaddr, sizeof(name), name, 0) < 0) {
strcpy(name, "[未知]");
}
printf("%s\t%s\n", addr, name);
}
// 清理资源
free(ii);
close(sock);
return 0;
}Code: Select all
# 设置交叉编译器路径和前缀
CROSS_COMPILE := /home/ch2/work/Lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-
# 定义工具链
CC := $(CROSS_COMPILE)gcc
CXX := $(CROSS_COMPILE)g++
LD := $(CROSS_COMPILE)ld
AR := $(CROSS_COMPILE)ar
STRIP := $(CROSS_COMPILE)strip
# 包含路径设置
SYSROOT_PATH = /home/ch2/work/Lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc
KERNEL_DIR = /home/ch2/work/Lyra-sdk/kernel
SRC_DIR = /home/ch2/work/easy_km
INCLUDE_FLAGS = -I${SRC_DIR}/include
# 目标名称
TARGET := test_ble
# 源文件
SRCS := test_ble.c
OBJS := $(SRCS:.c=.o)
# 编译选项
CFLAGS = --sysroot=$(SYSROOT_PATH) $(INCLUDE_FLAGS) -Wall -O2
# 库路径和库名称 - 修复这里
LIB_PATHS = -L${SRC_DIR}/lib/usr/lib
LIBS = -lc -lbluetooth
LDFLAGS = $(LIB_PATHS) $(LIBS)
# 默认目标
all: $(TARGET)
# 链接目标文件生成可执行文件
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
# 编译C源文件为目标文件
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
# 清理生成的文件
clean:
rm -f $(TARGET) $(OBJS)
# 声明伪目标
.PHONY: all clean installCode: Select all
/home/ch2/work/Lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc --sysroot=/home/ch2/work/Lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc -I/home/ch2/work/easy_km/include -Wall -O2 -o test_ble test_ble.o -L/home/ch2/work/easy_km/lib/usr/lib -lc -lbluetooth
/home/ch2/work/Lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm-none-linux-gnueabihf/10.3.1/../../../../arm-none-linux-gnueabihf/bin/ld: /home/ch2/work/Lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc/usr/lib/crt1.o: in function `_start':
/data/jenkins/workspace/GNU-toolchain/arm-10/src/glibc/csu/../sysdeps/arm/start.S:113: undefined reference to `__libc_csu_fini'
/home/ch2/work/Lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm-none-linux-gnueabihf/10.3.1/../../../../arm-none-linux-gnueabihf/bin/ld: /data/jenkins/workspace/GNU-toolchain/arm-10/src/glibc/csu/../sysdeps/arm/start.S:120: undefined reference to `__libc_csu_init'
/home/ch2/work/Lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm-none-linux-gnueabihf/10.3.1/../../../../arm-none-linux-gnueabihf/bin/ld: /home/ch2/work/easy_km/lib/usr/lib/libc.so: undefined reference to `_dl_audit_symbind_alt@GLIBC_PRIVATE'
/home/ch2/work/Lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm-none-linux-gnueabihf/10.3.1/../../../../arm-none-linux-gnueabihf/bin/ld: /home/ch2/work/easy_km/lib/usr/lib/libc.so: undefined reference to `__nptl_change_stack_perm@GLIBC_PRIVATE'
/home/ch2/work/Lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm-none-linux-gnueabihf/10.3.1/../../../../arm-none-linux-gnueabihf/bin/ld: /home/ch2/work/easy_km/lib/usr/lib/libc.so: undefined reference to `__nptl_set_robust_list_avail@GLIBC_PRIVATE'
/home/ch2/work/Lyra-sdk/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/../lib/gcc/arm-none-linux-gnueabihf/10.3.1/../../../../arm-none-linux-gnueabihf/bin/ld: /home/ch2/work/easy_km/lib/usr/lib/libc.so: undefined reference to `_dl_audit_preinit@GLIBC_PRIVATE'
collect2: error: ld returned 1 exit status
make: *** [Makefile:39: test_ble] Error 1
