2015-11-04 50 views
0

我正在編輯並重新編譯bluez 5.31版的hcitool.c。我從這個回答下列程序安裝的bluez 5.31: Bluetooth Low Energy in C - using Bluez to create a GATT server如何重新編譯現有的linux應用程序

在我的試用,我複製了hcitool.c文件,並將其命名爲Tools文件夾內myhcitool.c我用命令

gcc -o myhcitool.o myhcitool.c. 

這給了我一個錯誤

myhcitool.c:43:27: fatal error: lib/bluetooth.h: No such file or directory 
#include "lib/bluetooth.h" 
        ^
compilation terminated. 

我試圖複製工具文件夾以外的myhcitool.c並編譯它。這給了我這樣的一堆錯誤的東西:

/tmp/ccj1QmZK.o: In function `dev_info': 
myhcitool.c:(.text+0x293): undefined reference to `ba2str' 
/tmp/ccj1QmZK.o: In function `conn_list': 
myhcitool.c:(.text+0x501): undefined reference to `ba2str' 
myhcitool.c:(.text+0x50f): undefined reference to `hci_lmtostr' 
myhcitool.c:(.text+0x586): undefined reference to `bt_free' 
/tmp/ccj1QmZK.o: In function `cmd_dev': 

我也試圖通過在那裏修改簡單的printf編輯hcitool.c本身,然後重新進行「化妝」和「使安裝」整個命令bluez的。之後,當我嘗試運行hcitool時,我所做的修改沒有任何效果。

+0

你以前做過「乾淨」嗎? – Downvoter

+0

沒有。我現在就試了一下。 –

+0

我剛試過'make clean',然後重做'./configure','make'和'make install'。我在hcitool中的修改仍然不起作用。 –

回答

0

編譯錯誤清楚地表明您缺少文件和目錄,並且存在未定義的類型引用(因爲您缺少文件)。您正在複製其目錄外的文件並嘗試對其進行編譯。這不會工作,因爲它包含(和更多)正確編譯所需的缺失。

  • 如果你想要編輯hcitool直接你應該下載配合bluez源,解開它,cd到它,它./configure。 makefile將被生成,您可以使用make來構建可執行文件。如果您對hcitool.c文件進行了更改,則應確保重新編譯它,並在./hcitool而不是通用hcitool目錄中運行它,因爲它會將安裝的可執行文件安裝到系統中,而不是您編輯的那個。

  • 如果你想在Bluez目錄之外建立它作爲獨立的一種,你必須複製所需的#include <x>語句中定義的所有文件和文件夾,併爲它們創建一個單獨的生成文件,因爲複製後現有的可能無法正常工作。

  • 如果要將新文件添加到Bluez源文件,請確保您也進行了正確的Makefile編輯,以便在編譯期間將其包含在內。

我想補充一點,hcitool尚未保持很長一段時間,並在它的方式被淘汰配合bluez的,所以也許你應該完全採取不同的方法!

相關問題