在Windows 64bit上编译gopacket

时间:2016-06-27 07:10:34

标签: go winpcap cgo gopacket

我正在尝试在我的Windows 10上使用http://instagram.com/developer/ 我用它来嗅探并直接向NIC注入数据包 我可以使用GOARCH = 386轻松编译和运行我的代码,但不能在GOARCH = amd64中。

值得注意的是:我不是在试图交叉编译 我正在使用go1.6.windows-386编译32位版本,当我尝试用GOARCH = amd64编译时,我使用go1.6.windows-amd64。

我使用TDM-GCC作为linux编译工具 该错误不是指示性的。它只是说

{{1}}

如果有可能,有人设法建立这个吗?

3 个答案:

答案 0 :(得分:25)

好的,我已经弄清楚了。
要在Windows上编译gopacket 64bit,您需要执行以下操作:

  1. 安装go_amd64(将二进制文件添加到PATH中)
  2. 安装TDM GCC x64(将TDM-GCC二进制文件添加到PATH)
  3. 同时将TDM-GCC \ x86_64-w64-mingw32 \ bin添加到您的路径
  4. 安装Winpcap
  5. Download Winpcap developer's pack并将其解压缩到C:\
  6. 现在重点是缺少linux静态库文件
    lib / x64文件夹中的(libwpcap.a和libpacket.a)。我不知道为什么他们不是 包含在开发人员包中,但无论如何我们如何生成它们:

    1. 在您的PC中找到wpcap.dll和packet.dll(通常位于c:\ windows \ system32
    2. 将它们复制到其他临时文件夹中,否则您必须为以下命令提供Admin权限
    3. 对这些文件gendef wpcap.dllgendef packet.dll运行gendef(可通过MinGW Installation Manager获得,包mingw32-gendef)
    4. 这将生成.def文件
    5. 现在我们将生成静态库文件:
    6. 运行dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libwpcap.a --input-def wpcap.def
    7. dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libpacket.a --input-def packet.def
    8. 现在只需将libwpcap.a和libpacket.a复制到c:\ WpdPack \ Lib \ x64
    9. 那就是它。
      现在gopacket应该编译没有问题。

答案 1 :(得分:0)

非常感谢您的解决方案,它为我节省了很多时间!

只需添加一下即可使用Npcap进行相同操作,修改gopacket源代码以指向Npcap,它也将起作用。

如果您不了解Npcap:

答案 2 :(得分:0)

我在Windows上以“ Wpcap API兼容模式”安装了Npcap,现在gopacket可以正常工作。