问题
I am trying to run a basic code of c in linux[ubuntu] to search bluetooth device, but i am facing some problem.
By using command sudo apt-get install bluez, to install required blueZ library it is saying that bluez is already newest version.
But error comes that not able to find bluetooth.h and other files in compiling C source code, with gcc -o simplescan simplescan.c -lbluetooth
Is there a complete library package, or do I have to download these header files?.
I am following this link
回答1:
Maybe you didn't include the essential header.
here's an example of code to scan for bluetooth devices
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
#include <bluetooth/hci_lib.h>
int main(int argc, char **argv)
{
inquiry_info *ii = NULL;
int max_rsp, num_rsp;
int dev_id, sock, len, flags;
int i;
char addr[19] = { 0 };
char name[248] = { 0 };
dev_id = hci_get_route(NULL);
sock = hci_open_dev( dev_id );
if (dev_id < 0 || sock < 0) {
perror("opening socket");
exit(1);
}
len = 8;
max_rsp = 255;
flags = IREQ_CACHE_FLUSH;
ii = (inquiry_info*)malloc(max_rsp * sizeof(inquiry_info));
num_rsp = hci_inquiry(dev_id, len, max_rsp, NULL, &ii, flags);
if( num_rsp < 0 ) perror("hci_inquiry");
for (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, "[unknown]");
printf("%s %s\n", addr, name);
}
free( ii );
close( sock );
return 0;
}
to compile it on linux, just do
gcc -o simplescan simplescan.c -lbluetooth
EDIT:
Original code can be found in here
回答2:
As for i know there no packages for these headers. You have to download the following header files from internet.
bluetooth.hhci.hhci_lib.h
and create a directory called "bluetooth" under /usr/lib/ in your host machine and copy the above headers to /usr/lib/bluetooth/. Then compile your program, it should work.
Note: while compiling link with -lbluetooth
回答3:
You need to install the linux-headers package. On Ubuntu or Debian this is done by doing this:
sudo apt install linux-headers
回答4:
This solved my problem:
apt-get install libbluetooth-dev
来源:https://stackoverflow.com/questions/11408609/linux-bluetooth-programming-in-c