Я пытаюсь установить hping на Raspberry Pi 2. Я скачал источник с 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

Можно ли решить эту проблему, сделав программную ссылку? Если так, то где? Я не уверен, где компоновщик ищет библиотеку.

2 ответа2

0

-ltcl будет искать файл с именем libtcl.so в стандартных путях к библиотекам, а ваш - с именем libtcl8.6.so в довольно странном месте (что может быть нормальным для Raspbian).

Проблема здесь заключается в том, что ваш исходный код hing Git содержит уже сгенерированный скрипт configure без его источника configure.ac (или рукописный скрипт configure, который имитирует скрипты autotools).

Если вы посмотрите в своем скрипте 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 .

0

Если вы не используете 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .