登录
首页 >  Golang >  Go问答

"解决“lpcap not found”错误,即使已安装 libpcap"

来源:stackoverflow

时间:2024-03-15 11:06:29 463浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《"解决“lpcap not found”错误,即使已安装 libpcap"》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

尽管我已经安装了 libpcap-devel,但 遇到错误,无法找到 lpcap 来执行某些软件包的 make 命令。

go build -i -ldflags "-linkmode external -extldflags -static -x main.version=git-6e3f8a1c7a0a" -tags netgo -o prog/weaver/weaver ./prog/weaver
# github.com/weaveworks/weave/prog/weaver
/go/pkg/tool/linux_s390x/link: running s390x-linux-gnu-gcc failed: exit status 1
/usr/lib64/gcc/s390x-suse-linux/7/../../../../s390x-suse-linux/bin/ld: cannot find -lpcap
/tmp/go-link-225248852/000015.o: in function `mygetgrouplist':
/tmp/workdir/go/src/os/user/getgrouplist_unix.go:15: warning: using 'getgrouplist' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

我可以在以下位置看到 .so 文件

/usr/lib64 # ls | grep pcap
 libpcap.so
 libpcap.so.1
 libpcap.so.1.8.1

解决方案


openSUSE libpcap development RPm 不提供静态 libpcap.a,因此您无法静态链接 libpcap,除非您 能够从源代码(以及同样适用的任何其他库)构建静态库。

-ldflags 中删除 -static 可以避免此问题(如果您可以选择) 动态链接您的 go 程序。

安装该库的 devel 版本,您将获得标头和 .a 文件以及 .so 共享库

C 链接器需要这些来进行静态链接

此外,构建过程需要能够找到 .a 文件。这应该会自动发生,但你可以帮助它

找到 .a 文件所在的目录(例如,列出您用来安装的软件包)并在 ldflags 中使用 -L 选项添加该目录

本篇关于《"解决“lpcap not found”错误,即使已安装 libpcap"》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>