我正在尝试在我的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
如果有可能的话,有没有人能造出这个东西?
发布于 2016-06-28 15:10:51
好了,我已经弄明白了。
为了在windows上编译gopacket 64位,您需要执行以下操作:
现在的重点是缺少linux静态库文件
(libwpcap.a和libpacket.a)。我不知道为什么他们没有
包含在开发包中,但无论如何,这就是我们生成它们的方式:
gendef wpcap.dll和gendef packet.dll运行gendef (可通过MinGW安装管理器获得,package mingw32-gendef)dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libwpcap.a --input-def wpcap.def 就这样。
现在gopacket应该可以顺利编译了。
发布于 2018-11-22 08:05:21
非常感谢你的解决方案,它为我节省了很多时间!
我只想补充说,你可以用Npcap做同样的事情,修改gopacket源代码以指向Npcap,它也会起作用。
如果你不知道Npcap:
发布于 2019-11-19 12:23:37
我在"Wpcap API兼容模式“下安装了Npcap,gopacket现在运行得很好。
https://stackoverflow.com/questions/38047858
复制相似问题