我正在关注这个指导在我的 Debian Linux 上安装 snort。在步骤 2 中,在执行命令“Make”来构建 libpcap 时,我收到错误“目标‘pcap-bt-monitor-linux.o’的配方失败”
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-bt-monitor-linux.c
./pcap-bt-monitor-linux.c:42:28: fatal error: bluetooth/mgmt.h: No such file or directory
#include <bluetooth/mgmt.h>
^
compilation terminated.
Makefile:83: recipe for target 'pcap-bt-monitor-linux.o' failed
make: *** [pcap-bt-monitor-linux.o] Error 1
答案1
正如其他人提到的,问题是您找不到缺少的依赖项 bluetooth/mgmt.h。
比上面提到的解决问题更直接的方法是创建一个自定义包含目录,您将在其中复制丢失的标头:
# ${source_dir} is the dir where you're using make
# creating custom include directory
mkdir -p ${source_dir}/include/bluetooth
# downloading the missing header into it
curl https://projects.archlinux.org/svntogit/packages.git/plain/trunk/mgmt.h?h=packages/libpcap -o ${source_dir}/include/bluetooth/mgmt.h
# Adding the custom include directory to the include path
export CFLAGS="$CFLAGS -I${source_dir}/include"
看看是否有效
答案2
该消息告诉您缺少编译应用程序的依赖项。使用apt-file
,您可以轻松找到哪些包包含相关文件:
# apt-file update
# apt-file search bluetooth/mgmt.h
linux-headers-3.16.0-4-common: /usr/src/linux-headers-3.16.0-4-common/include/net/bluetooth/mgmt.h
根据您运行的 Debian 版本,软件包名称可能会有所不同。
答案3
Make 找不到依赖项。您要么没有该文件(很可能),要么您将其安装在非标准位置。确保已安装蓝牙开发包:
sudo aptitude install libbluetooth-dev
编辑:用户@jordanm有一个更好的通用方法来查找您丢失的文件,但如果您使用wheezy,它位于libbluetooth-dev包裹。