Компилируем hping3 на Raspberry Pi. Ошибка компоновщика: не удается найти -ltcl

798
Nevado

Я пытаюсь установить 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

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

0

2 ответа на вопрос

0
Alex

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

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

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

Если вы заглянете в свой 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.

Это было так, как вы сказали. Большое спасибо, спасибо! :) Nevado 7 лет назад 0

Похожие вопросы