我正在尝试在 Raspberry Pi 2 上安装 hping。我从 GitHub 下载了源代码,https://github.com/antirez/hping。
执行后./configure
我尝试了一下make
,但是从链接器收到一条错误消息:
/usr/bin/ld:找不到 -ltcl
libtcl8.6 已安装,位于/usr/lib/arm-linux/gnueabihf/libtcl8.6.so
/usr/lib/arm-linux/gnueabihf/libtcl8.6.so.0
我可以通过建立软链接来解决这个问题吗?如果可以,在哪里?我不确定链接器在哪里寻找库。
答案1
-ltcl
将在标准库路径中搜索名为的文件libtcl.so
,而您的文件命名libtcl8.6.so
在一个相当奇怪的位置(但这在 Raspbian 上可能是正常的)。
这里的问题是你的hping Git 源包含已生成的configure
脚本,但没有其configure.ac
源(或模仿自动工具脚本的手写配置脚本)。
如果你看一下你的configure
脚本,你会看见它在固定位置寻找一些与您的系统不匹配的可选特定 Tcl 版本:
#
# TCL detection
#
for TCLPATH_TRY in "/usr/bin/" "/usr/local/bin/" "/bin/"
do
for TCLVER_TRY in "8.4" "8.3" "8.2" "8.1" "8.0"
do
#....
您应该编辑此配置脚本以添加:
- 你的图书馆路径
- 你的库版本
然后,重新运行configure
脚本,仔细阅读其输出(它应该打印TCL_LIB: -ltcl8.6
),并尝试make
。
答案2
如果你不使用 TCL,请./configure --no-tcl
在尝试发出之前运行make
。顺便说一句,在你执行此操作之前安装libpcap-dev
sudo apt-get install libpcap0.8 libpcap0.8-dev libpcap-dev
否则它将拒绝编译。
修复此问题的简单快捷方法(没有尝试过,但通常有效)cannot find -ltcl
是符号链接
ln -s /usr/lib/arm-linux/gnueabihf/libtcl8.6.so.0 /usr/lib/arm-linux/gnueabihf/libtcl8.6.so