在Windows 64位上编译gopacket

2023-11-27

我正在尝试使用gopacket在我的 Windows 10 上。
我用它来嗅探数据包并将数据包直接注入到网卡或从网卡注入数据包。
我可以使用 GOARCH=386 轻松编译和运行我的代码,但不能在 GOARCH=amd64 中编译和运行我的代码。

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

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

c:/WpdPack/Lib/x64/wpcap.lib: error adding symbols: File in wrong format collect2.exe: error ld returned 1 exit status

如果可能的话,有人设法建造这个吗?


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

  1. 安装 go_amd64 (将 go 二进制文件添加到您的 PATH 中)
  2. 安装 TDM GCC x64(将 TDM-GCC 二进制文件添加到您的路径)
  3. 还将 TDM-GCC\x86_64-w64-mingw32\bin 添加到您的 PATH
  4. Install Winpcap
  5. 下载 Winpcap 开发者包并将其解压到C:\

现在的问题是缺少linux静态库文件
(libwpcap.a 和 libpacket.a)来自 lib/x64 文件夹。我不知道为什么他们不
包含在开发人员包中,但无论如何,这就是我们生成它们的方式:

  1. 在您的 PC 中找到 wpcap.dll 和 packet.dll(通常位于 c:\windows\system32
  2. 将它们复制到其他临时文件夹,否则您必须向以下命令提供管理员权限
  3. 对这些文件运行 gendefgendef wpcap.dll and gendef packet.dll(可通过 MinGW Installation Manager 包 mingw32-gendef 获得)
  4. 这将生成 .def 文件
  5. 现在我们将生成静态库文件:
  6. run dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libwpcap.a --input-def wpcap.def
  7. and 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

就是这样。
现在 gopacket 应该可以毫无问题地编译了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Windows 64位上编译gopacket 的相关文章

随机推荐