2013-03-26 2 views
2

Я не могу установить пакет pcap под Windows 7 (64 бит). Кто-нибудь знает, как это сделать?cabal install pcap windows 64bit

Сообщение об ошибке, если я бегу "междусобойчик установить PCAP":

cabal.exe: Отсутствует зависимость от внешней библиотеки:

  • Missing (или плохой) заголовочного файла: pcap.h
  • Отсутствует библиотека C: PCAP

скачал WinPcap 4.1.2 Разработчики пакета здесь: http://www.winpcap.org/devel.htm

Установленный MinGW/MSYS с нуля. Пробовал оба: предварительно упакованный GHC 7-6.2 (ghc-7.6.2-x86_64-unknown-mingw32.tar.bz2) и скомпилировал его сам под MinGW/MSYS.

Там, кажется, несколько проблем:

  1. Когда я обеспечиваю включать путь к pcap.h (--extra-include-каталоги), я могу сделать "междусобойчик Configure" успешно, но он не на «cabal build» с «netinet/in.h» не найден.

  2. Если я устанавливаю netinet/in.h, работая под MSYS «mingw-get install msys-core-dev», тогда я получаю тонны сообщений определенного типа.

  3. У пакета разработчиков WinPCap нет libpcap.a (у него есть libwpcap.a). И похоже, что нет 64-битной версии. Нужно ли мне самому скомпилировать его?

Я был бы признателен, если кто-нибудь может предложить, как такие ситуации обычно обрабатываются для пакетов подкастов под Windows.

ответ

0

Вы пробовали просто сделать netinet/in.h доступным? Мое воспоминание состояло в том, что это использовалось для генерации эквивалентов Haskell. Возможно, вам больше не понадобится. Предупреждение: я последний раз работал над этим пакетом 7 лет назад.

+0

Да, я попробовал. Тот, который установлен с mingw-get, имеет некоторые зависимости от других каталогов (asm, sys, cygwin), которые я также скопировал, что в итоге приводит к конфликтам компиляции.На самом деле есть два вопроса: нужна ли библиотека pcap под Windows и как установить netinet/in.h во встроенный mingw: C: \ MinGW \ msys \ 1.0 \ local \ mingw \ x86_64-w64-mingw32 \. Конфликты происходят из-за установленных MinGW и mingw, которые поставляются с GHC. – beanandgone

2

У пакета разработчиков WinPCap нет libpcap.a (у него есть libwpcap.a).

Исправить. К лучшему или худшему, в то время как библиотека называется «libpcap» на UN * X и поэтому связана с флагом -lpcap, она называется «WinPcap» в Windows, а файл .a называется «libwpcap.a», что означает, что if вы создаете приложение с инструментами стиля UN * X, оно будет связано с флагом -lwpcap.

Таким образом, нет, даже если вы используете файлы стиля UN * X в Windows, вы не используете те же флаги для связывания программы на основе pcap, которую вы используете в UN * X.

И, да, вы должны были бы скомпилировать 64-битную версию самостоятельно; в то время как они предлагают 64-битную версию файла .lib для использования с инструментами сборки Microsoft, они не предлагают 64-битную версию файла .a для использования с другими инструментами, похожими на UN * X.

+0

Спасибо. Моя путаница возникла из-за того, что пакет Haskell/Cabal Pcap имеет «* -mingw32) EXTRA_LIBS = wsock32 CALLCONV = stdcall ;; *)" в файле configure.ac. Вот почему я предположил, что mingw32 поддерживается платформой, и может быть, я использую полностью неправильную библиотеку pcap, так как в конфигурации есть ссылка на wsock32. – beanandgone

Смежные вопросы