Libpcap не найден при кросс-компиляции 32-битного на 64-битном Debian - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь скомпилировать 32-битное приложение на 64-битном Debian Stretch.Таким образом, я успешно скомпилировал несколько других приложений, но одно приложение, использующее библиотеку pcap , доставляет мне проблемы.Кажется, нигде для моей платформы не существует 32-битной версии этой библиотеки.

Описание проблемы

Когда я пытаюсь связать свое приложение, вот так:

g++ (...objectfiles-and-options...) -m32 -o myapp -lpthread -lpcap

Я получаю ошибку

/usr/bin/ld: cannot find -lpcap

Я проверил, и в / usr / lib32 действительно нет libpcap.so (или его варианта).Тем не менее, все остальные библиотеки, которые я использую, присутствуют там (например, libpthread).Я попытался создать там софт-ссылки на 64-битные библиотеки pcap, на всякий случай, если они должны быть мультиплатформенными, но это привело только к «пропуску несовместимых /usr/lib32/libpcap.so при поиске -lpcap».".

Я установил libpcap-dev, libc6-dev-i386, gcc-multilib и g ++ - multilib (очевидно, поскольку кросс-компиляция работает нормально для всех приложений, которые не используют libpcap).Я подозреваю, что должен быть libpcap-dev-i386, который я мог бы установить, но, похоже, его нет.

Возможно, я должен упомянуть, что приложение успешно компилируется и связывается как 64-битное.

Кто-нибудь знает, что мне здесь не хватает?

1 Ответ

0 голосов
/ 13 февраля 2019

Вы можете скомпилировать libpcap самостоятельно.Это, вероятно, лучшее решение, чем в зависимости от пакетов.Используйте configure для 32-битной архитектуры, а затем укажите компилятору LDFLAGS указатель на вашу lib или установите его в / usr / lib32 /

...