go - 主包中的 CGO 调用与模块中的 CGO 调用有什么区别?
问题描述
我编写了一个 BPF 程序,我可以使用 gobpf 安装它,即使用他们的 bcc 工具。虽然这在主包中可以正常工作,但一旦我将其移动到包中以将其作为模块导入,它就会中断。
澄清一下:它适用于 中的所有代码package main
,但是一旦我重命名包并将其移至main()
它,cmd/command.go
它就会停止工作,并go run
抱怨它找不到包含的 lib ( bcc/proto.h
)。gcc
顺便说一句,这与我在文件上运行时总是遇到的错误相同,.c
但没有任何迹象表明我想使用 BPF(这部分gobpf
对我有用,直到我将其调用移至模块......)。
我意识到这是一个非常具体的问题,位于 Go、CGo、C 和 C++ 处理方式、BPF 和 bcc 之间的一个奇怪的地方,但我在这里不知所措。
如果有帮助,您可以在此处查看我的代码https://github.com/bwNetFlow/bpfdump 。bcc
除了go run
做它的事情之外,它还需要安装。基本上:
HEAD
是不工作的模块化版本 (go run cmd/dump.go
)HEAD~
是我最初的实验,它确实有效(go run bpfdump.go
)(作为用户,你会得到一个权限错误,这很好,因为它已经编译过了)。
PS:我认为这可能与这个(相当有创意?)构造有关bcc/proto.h
:https ://github.com/iovisor/bcc/blob/master/src/cc/exported_files.cc
解决方案
推荐阅读
- powerbi - 如何阻止 Power BI Cards 刷新以便导出为 PDF?
- sql - “Int to Char”或“Char to Int”哪个更有效?
- python - 将索引设置为位于 3 级多索引数据框中的日期列
- javascript - 如何从嵌套的 JSON 对象中获取检查值的数组
- jsp - How to get the select box value from jsp to another servlet?
- c - 从 MySQL 5.6 升级到 MariaDB 10.3 后,“mysql_warning_count”错误地返回 0 个警告
- ios - 无法转换“NavigationLink”类型的值
' 关闭结果类型 '_' - javascript - Javascript: syntax and the new keyword
- python - Looping through multiple arrays & concatenating values in pandas
- ios - Apple Transporter 无法上传 IPA 并出现错误:无法为“appname”状态代码 401 创建 .itmsp