2012-06-09 2 views
4

나는 새로운 stackoverflow 사용자입니다! KUbuntu 12.04에서 C로 Bluetooth를 프로그래밍 할 때 몇 가지 문제가 있기 때문에 작성 중입니다.리눅스 블루투스 프로그래밍에서 C & socket.h

은 내가 (연결 시작)이 PDF에서 발견 한 프로그램을 통해 내 노트북에 장치 (LEGO 마인드 스톰 벽돌)를 연결하기 위해 노력하고있어 : NXT_Bluetooth_Handout

나는 다음과 같은 패키지 설치 : 를 - bluez-hcidump, 통신 디버깅 도구 - bluez, 리눅스 블루투스 스택과 관련 도구 - 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 다른 기능이 라이브러리 (3210)

주로 나는 두 가지 문제가 발생 제공하고 문제없이 작동합니다.

2) 소켓 관련 오류가 발생 str2ba 기능을 대신 ba2str 사용하기 위해 내가 코드를 수정하는 경우 :

$ 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 /입니다 사실을 실행할 경우 :

이러한 문제를 해결하는 방법을 아는 사람이 있습니까? 모든 상황을 충분히 명확하게 설명하기를 바랍니다 ... 나쁜 영어로 사과드립니다!

대단히 감사합니다!

답변

4

두 번째 질문은 작성한 코드를 게시해야한다는 것입니다. 그렇지 않으면 우리는 나쁜 것을 알아낼 수 없습니다. 첫 번째 질문에 대한

: 당신은 GCC 호출 할 때 마지막 매개 변수로 라이브러리 링커 플래그를 넣어해야합니다

gcc nxt_bt_connect.c -o nxt_bt_connect -lm -lbluetooth 
+1

좋아, 나는 아주 무지하고 대단히 감사한다 !! 다른 파일에는 몇 가지 프로그래밍 오류가 있습니다 .-) – mafalda

+0

Hei, 다시 한 번 귀찮게해서 죄송합니다. 같은 프로그램의 cmake 파일을 만들고 싶다면 어떻게 -lm을 포함시킬 수 있습니까? 블루투스? – mafalda

+0

음, 파일에 입력 하시겠습니까? –

0

일명 /usr/include/sys/socket.h<sys/socket.h>libc6-dev 패키지와 함께 제공, 쿠분투는 데비안 패키지를 사용하는 가정.