首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在windows 64位上编译gopacket

在windows 64位上编译gopacket
EN

Stack Overflow用户
提问于 2016-06-27 15:10:34
回答 3查看 6.5K关注 0票数 7

我正在尝试在我的Windows10上使用gopacket

我使用它来嗅探数据包,并将数据包直接注入到NIC或从NIC注入数据包。

我可以很容易地用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

如果有可能的话,有没有人能造出这个东西?

EN

回答 3

Stack Overflow用户

发布于 2016-06-28 15:10:51

好了,我已经弄明白了。

为了在windows上编译gopacket 64位,您需要执行以下操作:

  1. Install go_amd64 (将go二进制文件添加到您的路径)
  2. Install TDM GCC x64 (将TDM-GCC二进制文件添加到您的路径)
  3. 还将TDM-GCC\x86_64-w64-mingw32\bin添加到您的路径
  4. Install code并将其解压缩到C:\

现在的重点是缺少linux静态库文件

(libwpcap.a和libpacket.a)。我不知道为什么他们没有

包含在开发包中,但无论如何,这就是我们生成它们的方式:

  1. 在您的PC中查找wpcap.dll和packet.dll (通常位于c:\windows\system32
  2. 将它们复制到其他临时文件夹中,否则您必须提供管理员权限,以便执行以下命令
  3. 对这些文件gendef wpcap.dllgendef packet.dll运行gendef (可通过MinGW安装管理器获得,package mingw32-gendef)
  4. this将生成.def文件
  5. 现在我们将生成静态库文件:
  6. run dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libwpcap.a --input-def wpcap.def
  7. <代码>h133现在只需将libwpcap.a和libpacket.a复制到c:\WpdPack\Lib\x64 <代码>H234<代码>G235

就这样。

现在gopacket应该可以顺利编译了。

票数 28
EN

Stack Overflow用户

发布于 2018-11-22 08:05:21

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

我只想补充说,你可以用Npcap做同样的事情,修改gopacket源代码以指向Npcap,它也会起作用。

如果你不知道Npcap:

票数 0
EN

Stack Overflow用户

发布于 2019-11-19 12:23:37

我在"Wpcap API兼容模式“下安装了Npcapgopacket现在运行得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38047858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档