2015-11-04 96 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的,所以也许你应该完全采取不同的方法!

相关问题