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

针对某些软件包的make命令出现“找不到lpcap”错误,尽管我已经安装了libpcap.devel。 </ p>

 开始构建-i -ldflags“ -linkmode external -extldflags -static -X main.version = git-6e3f8a1c7a0a”-标记netgo -o prog / weaver / weaver ./  prog / weaver 
#github.com/weaveworks/weave/prog/weaver
/go/pkg/tool/linux_s390x/link:运行s390x-linux-gnu-gcc失败:退出状态1
/ usr / lib64 / gcc / s390x-suse-linux / 7 /../../../../ s390x-suse-linux / bin / ld:找不到-lpcap
/ tmp / go-link-225248852 / 000015.o :在函数“ mygetgrouplist”中:
/ tmp / workdir / go / src / os / user / getgrouplist_unix.go:15:警告:在静态链接的应用程序中使用“ getgrouplist”需要在运行时使用来自glibc版本的共享库 链接
</ code> </ pre>

我可以在</ p>

/ usr / lib64#中看到.so文件。 grep pcap </ p>

libpcap.so </ p>

libpcap.so.1 </ p>

libpcap.so.1.8.1 </ p>
</ div>

展开原文

原文

Facing error with "cannot find lpcap" for make command for some package, although I have already installed 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

I can see the .so files at

/usr/lib64 # ls | grep pcap

libpcap.so

libpcap.so.1

libpcap.so.1.8.1

donmqryh49993
donmqryh49993 我找不到.a文件
接近 2 年之前 回复
dongtiaozhou4914
dongtiaozhou4914 提出了另一条建议....希望它有意义(并且可行)
接近 2 年之前 回复
doucan4815
doucan4815 您可以看到.a文件吗?共享库与静态链接无关。
接近 2 年之前 回复
douyi9787
douyi9787 我在IBMzvm上运行
接近 2 年之前 回复
douwen6274
douwen6274 您是否正在为IBMzSeries进行交叉编译?
接近 2 年之前 回复

2个回答



openSUSE libpcap </ code>开发RPm
不提供静态的 libpcap.a </ code>,因此除非您
are,否则您无法静态链接 libpcap </ code> 能够从源代码(以及适用于此代码的任何其他代码)构建静态库。</ p>

从您的 -ldflags </ code中删除 -static </ code> >如果可以动态链接go程序,则可以避免此问题。</ p>
</ div>

展开原文

原文

The openSUSE libpcap development RPm does not provide a static libpcap.a, so you cannot statically link libpcap unless you are able to build the static library from source (and any others to which the same applies).

Removing -static from your -ldflags would avoid this problem, if it is an option for you to link your go program dynamically.

douyan1896
douyan1896 是。 从源代码安装解决了我的问题
接近 2 年之前 回复
dongtan8122
dongtan8122 或从源安装
接近 2 年之前 回复



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

C链接器需要使用这些链接进行静态链接</ p>

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

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

展开原文

原文

Install the devel version of the library and you get the headers and the .a files as well as the .so shared libraries

The C linker needs these for static linking

Also, the build process needs to be able to find the .a files. This should happen automatically but you can help it

Find the directory that the .a files are in ( for instance by listing the package you used to install ) and add that directory with a -L option in your ldflags

donjd86266
donjd86266 我确实安装了libpcap devel。 仍然面临着同样的问题。
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问