在 Raspberry Pi 上编译 hping3。链接器错误:找不到 -ltcl

在 Raspberry Pi 上编译 hping3。链接器错误:找不到 -ltcl

我正在尝试在 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
        #....

您应该编辑此配置脚本以添加:

  1. 你的图书馆路径
  2. 你的库版本

然后,重新运行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

相关内容