Не удается скомпилировать libpcap в Dell SUSE Enterprise

Мы используем Dell SUSE Enterprise. Нет выбора.

SUSE не имеет libpcap-devel или чего-либо подобного в репозиториях zypper.

Я скачал и установил libpcap из репозитория GIT. libpcap требует компиляции как flex, так и bison. flex версии 2.5.35 находится в репо, как и bison.

Однако я не могу столкнуться с проблемой, когда для компиляции используется libpcap-devel. Сценарий autoconf терпит неудачу при попытках связать в libpcap.so:

configure:3633: $? = 1
configure:3636: checking whether we are using the GNU C++ compiler
configure:3665: g++ -c   conftest.cpp >&5
configure:3672: $? = 0
configure:3689: result: yes
configure:3698: checking whether g++ accepts -g
configure:3728: g++ -c -g  conftest.cpp >&5
configure:3735: $? = 0
configure:3836: result: yes
configure:3861: checking dependency style of g++
configure:3952: result: gcc3
configure:3981: checking for a BSD-compatible install
configure:4049: result: /usr/bin/install -c
configure:4067: checking for pcap_lookupdev in -lpcap
configure:4102: gcc -o conftest -g -O2   conftest.c -lpcap   >&5
/usr/local/lib/libpcap.so: undefined reference to `pcap_lex'
collect2: ld returned 1 exit status
configure:4109: $? = 1
configure: failed program was:

Запустив nm в архиве, нахожу:

$ nm /usr/local/lib/libpcap.so | grep pcap_lex
                 U pcap_lex

конечно, pcap_lex - это #define от yylex.

Я здесь не над головой. Я пытаюсь понять, почему ничего из этого не компилируется должным образом на Suse. Кто-нибудь знает?


person vy32    schedule 13.03.2012    source источник


Ответы (1)


Каким-то образом все, что вы делали для компиляции libpcap, приводило к неправильной сборке.

Без:

  1. файл config.log из каталога libpcap;
  2. Makefile из каталога libpcap;
  3. вывод сборки в каталог libpcap;

будет невозможно определить, что это было, и, следовательно, будет невозможно исправить процесс так, чтобы libpcap собиралась правильно. Я никогда не видел проблем с libpcaps, созданными в Linux, поэтому я не могу определить, что здесь происходит.

(Если вы предоставите эту информацию, вы поможете не только себе, но и всем людям, которые сообщали о подобных проблемах, но отказались отвечать на аналогичные вопросы и, следовательно, не предоставили никакой из рассматриваемой информации.)

person Community    schedule 13.03.2012
comment
Хотя вы технически правы, оказалось, что лучшим подходом было загрузить исходный код libpcap 1.2.1 с tcpdump.org. Эта версия скомпилирована без проблем. Так что настоящий ответ - не использовать случайные релизы с github. - person vy32; 14.03.2012
comment
Ну, по крайней мере, некоторые из других людей, которые сообщили об этих проблемах, сообщали о проблемах со стандартным выпуском, загруженным с tcpdump.org, так что это не обязательно гарантированное исправление. - person ; 14.03.2012
comment
Или в моем случае, используя файлы tcpdump.org, я успешно построил библиотеку, но затем, когда я пытаюсь связать ее с проектом, я получаю эту ошибку. - person Code Abominator; 06.01.2016