Я новый пользователь stackoverflow! Я пишу, потому что у меня есть некоторые проблемы с программированием Bluetooth с помощью C на моей KUbuntu 12.04.
Я пытаюсь подключить устройство (LEGO Mindstorm Brick) к своему ноутбуку с помощью программы, которую я нашел в этом pdf-файле (Начать подключение): NXT_Bluetooth_Handout
Я установил следующие пакеты: - bluez-hcidump, средство отладки связи - bluez, стек Bluetooth для 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
Проблема в том, что у меня нет заголовка сокета 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
Есть ли кто-нибудь, кто знает, как решить эти проблемы? Я надеюсь, что описал всю ситуацию достаточно ясно... Прошу прощения за мой плохой английский!
Большое спасибо!!