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

时间:2018-11-09 07:35:33

标签: go gcc makefile pcap

某些软件包的make命令遇到“无法找到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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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

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