2

我无法在 Windows 7(64 位)下安装 pcap 包。有人知道该怎么做吗?

如果我运行“cabal install pcap”,则会出现错误消息:

cabal.exe:缺少对外部库的依赖:

  • 缺少(或错误)的头文件:pcap.h
  • 缺少 C 库:pcap

我从这里下载了 WinPcap 4.1.2 Developers Pack: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-dirs) 的包含路径时,我可以成功执行“cabal configure”,但在“cabal build”上失败,找不到“netinet/in.h”。

  2. 如果我通过在 MSYS 下运行“mingw-get install msys-core-dev”来安装 netinet/in.h,那么我会收到大量不同类型的已定义消息。

  3. WinPCap Developers Pack 没有 libpcap.a(它有 libwpcap.a)。看起来它没有 64 位版本。我需要自己编译吗?

如果有人能建议 Windows 下的 cabal 包通常如何处理这种情况,我将不胜感激。

4

2 回答 2

2

WinPCap Developers Pack 没有 libpcap.a(它有 libwpcap.a)。

正确的。无论好坏,虽然库在 UN*X 上称为“libpcap”,因此与 flag 链接-lpcap,但在 Windows 上称为“WinPcap”,.a文件称为“libwpcap.a”,这意味着如果您构建具有 UN*X 风格工具的应用程序,它将与 flag 链接-lwpcap

所以,不,即使您在 Windows 上使用 UN*X 样式的文件,也不会使用与在 UN*X 上执行的相同标志来链接基于 pcap 的程序。

而且,是的,您必须自己编译一个 64 位版本;虽然他们提供了.lib用于 Microsoft 构建工具的 64 位版本的文件,但他们似乎没有提供.a用于更多类似 UN*X 的工具的 64 位版本的文件。

于 2013-03-27T18:47:33.377 回答
0

您是否尝试过让 netinet/in.h 可用?我记得这是用来生成 Haskell 等价物的。您可能不需要其他任何东西。警告:我上一次在这个包上工作是在 7 年前。

于 2013-03-27T13:20:00.217 回答