gpt4 book ai didi

go - 在 Windows 64 位上编译 gopacket

转载 作者:IT王子 更新时间:2023-10-29 01:15:39 26 4
gpt4 key购买 nike

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

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

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

c:/WpdPack/Lib/x64/wpcap.lib: 添加符号时出错:文件格式错误
collect2.exe:错误 ld 返回 1 退出状态

有没有人设法构建这个,如果可能的话?

最佳答案

好的,我已经弄明白了。
为了在 Windows 上编译 gopacket 64bit,你需要执行以下操作:

  1. 安装 go_amd64(将 go 二进制文件添加到您的 PATH)
  2. 安装 TDM GCC x64(将 TDM-GCC 二进制文件添加到您的 PATH)
  3. 同时将 TDM-GCC\x86_64-w64-mingw32\bin 添加到您的 PATH
  4. 安装 Winpcap
  5. Download Winpcap developer's pack并解压到C:\

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

  1. 在您的 PC 中找到 wpcap.dll 和 packet.dll(通常在 c:\windows\system32 中
  2. 将它们复制到其他临时文件夹,否则您必须为以下命令提供管理员权限
  3. 在这些文件上运行 gendef gendef wpcap.dllgendef packet.dll(可通过 MinGW 安装管理器获得,包 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

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

关于go - 在 Windows 64 位上编译 gopacket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38047858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com