2018-11-09 07:35
浏览 1.1k


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
/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

图片转代码服务由CSDN问答提供 功能建议


 开始构建-i -ldflags“ -linkmode external -extldflags -static -X main.version = git-6e3f8a1c7a0a”-标记netgo -o prog / weaver / weaver ./  prog / weaver
 / 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版本的共享库 链接


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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dqvzfp6468 2018-11-09 10:43

    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.

    点赞 打赏 评论
  • drag2458 2018-11-09 08:00

    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

    点赞 打赏 评论

相关推荐 更多相似问题