Ошибка "lpcap not found", хотя я уже установил libpcap - PullRequest
0 голосов
/ 09 ноября 2018

Возникла ошибка с "not find lpcap" для команды make для некоторого пакета, хотя я уже установил 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 голосов
/ 09 ноября 2018

RPS разработки openSUSE libpcap не предоставляет статический libpcap.a, поэтому вы не можете статически связать libpcap, если вы не способны создавать статическую библиотеку из источника (и любых других, к которым применимо то же самое).

Удаление -static из вашего -ldflags позволит избежать этой проблемы, если это вариант для вас динамически связать вашу программу go.

0 голосов
/ 09 ноября 2018

Установите версию библиотеки devel, и вы получите заголовки и файлы .a, а также совместно используемые библиотеки .so

Для компоновщика C они необходимы для статической компоновки

Кроме того,процесс сборки должен быть в состоянии найти файлы .a.Это должно происходить автоматически, но вы можете помочь ему

Найдите каталог, в котором находятся файлы .a (например, перечислив пакет, который вы использовали для установки), и добавьте этот каталог с параметром -L в свои ldflags

...