C&socket.h中的Linux蓝牙编程

我是一个新的计算器用户! 我正在写,因为我在KUbuntu 12.04上用C编写了一些蓝牙问题。

我试图通过我在这个pdf中find的程序(启动连接)将一个设备(LEGO Mindstorm Brick)连接到我的笔记本: NXT_Bluetooth_Handout

我安装了以下软件包: – bluez-hcidump,通信debugging工具 – bluez,Linux蓝牙堆栈和相关工具 – libBluetooth3,BlueZ库 – libBluetooth-dev,用于链接到BlueZ库的开发文件

// Socket, used for Bluetooth socket #include <sys/socket.h> #include <sys/types.h> // Bluetooth headers #include <bluetooth/bluetooth.h> #include <bluetooth/rfcomm.h> 

主要是我遇到了两个问题:1)如果我只是试着编译程序,我得到:

 $ gcc -lm -lbluetooth nxt_bt_connect.c -o nxt_bt_connect /tmp/ccSLdkpn.o: In function `init_bluetooth': nxt_bt_connect.c:(.text+0x60): undefined reference to `str2ba' collect2: ld returned 1 exit status 

其中str2ba是一个BlueZ函数,它应该工作… ba2str是这个库提供的另一个函数,它工作没有问题。

2)如果我修改代码,以便使用ba2str而不是str2ba函数,我得到一个与套接字相关的错误:

 $ gcc -lm -lbluetooth 1.c -o nxt_bt_connect2 1.c: In function 'main': 1.c:101:23: error: called object 'socket' is not a function 

问题是我没有socket头是sys /,实际上如果我运行:

 find /usr/include/ -name socket.h /usr/include/gtkmm-2.4/gtkmm/socket.h /usr/include/linux/socket.h /usr/include/asm-generic/socket.h /usr/include/giomm-2.4/giomm/socket.h /usr/include/x86_64-linux-gnu/sys/socket.h /usr/include/x86_64-linux-gnu/asm/socket.h /usr/include/x86_64-linux-gnu/bits/socket.h 

有谁知道如何解决这些问题? 我希望能以足够清晰的方式描述所有情况……我为我的坏英语道歉!

非常感谢你!!

对于第二个问题:你必须发布你写的代码。 否则我们无法弄清楚什么是坏的。

对于第一个问题:调用GCC时,需要将库链接器标志作为最后一个参数:

 gcc nxt_bt_connect.c -o nxt_bt_connect -lm -lbluetooth 

假设KUbuntu使用Debian软件包, libc6-dev软件包中包含了<sys/socket.h>/usr/include/sys/socket.h