尽管我已经安装了 libpcap,但仍然遇到“找不到 lpcap”的错误

尽管cannot find lpcap我已经安装了libpcap-devel.


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 


慕后森
浏览 282回答 2
2回答

慕慕森

openSUSE开发 RPm 不提供 static ,因此您不能静态链接,除非libpcap您能够从源代码(以及同样适用的任何其他库)构建静态库。libpcap.alibpcap如果您可以选择动态链接您的 go 程序,那么-static从您的项目中删除可以避免这个问题。-ldflags

隔江千里

安装库的开发版本,您将获得标头和 .a 文件以及 .so 共享库C 链接器需要这些用于静态链接此外,构建过程需要能够找到 .a 文件。这应该会自动发生,但您可以帮助它找到 .a 文件所在的目录(例如通过列出您用于安装的包)并在您的 ldflags 中添加带有 -L 选项的目录
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go