google / gopacket

Provides packet processing capabilities for Go
BSD 3-Clause "New" or "Revised" License
6.3k stars 1.13k forks source link

Error while statically linking libpcap.a to gopacket app #1167

Open bsomani opened 5 months ago

bsomani commented 5 months ago

Hi All,

I am trying to statically link the libpcap.a to my app which is calling gopacket API's I tried with below command,

LDFLAGS='-l/usr/lib/x86_64-linux-gnu/libdbus-1.a -l/usr/lib/x86_64-linux-gnu/libpcap.a' CGO_ENABLED=1 go build -ldflags '-linkmode external -extldflags -static' -o client cmd/client/main.go

but I am getting below error

command-line-arguments

/usr/local/go/pkg/tool/linuxamd64/link: running gcc failed: exit status 1 /usr/bin/ld: /tmp/go-link-2159048965/000024.o: in function `mygetgrouplist': //GOROOT/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 /usr/bin/ld: /tmp/go-link-2159048965/000023.o: in function mygetgrgid_r': /_/GOROOT/src/os/user/cgo_lookup_cgo.go:45: warning: Using 'getgrgid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/bin/ld: /tmp/go-link-2159048965/000023.o: in functionmygetgrnamr': //GOROOT/src/os/user/cgo_lookup_cgo.go:54: warning: Using 'getgrnam_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/bin/ld: /tmp/go-link-2159048965/000023.o: in function mygetpwnam_r': /_/GOROOT/src/os/user/cgo_lookup_cgo.go:36: warning: Using 'getpwnam_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/bin/ld: /tmp/go-link-2159048965/000023.o: in functionmygetpwuidr': //GOROOT/src/os/user/cgo_lookup_cgo.go:27: warning: Using 'getpwuid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/bin/ld: /tmp/go-link-2159048965/000006.o: in function _cgo_9c8efe9babca_C2func_getaddrinfo': /tmp/go-build/cgo-gcc-prolog:58: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libpcap.a(nametoaddr.o): in functionpcap_nametoaddr': (.text+0x9): warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libpcap.a(nametoaddr.o): in function pcap_nametonetaddr': (.text+0x101): warning: Using 'getnetbyname_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libpcap.a(nametoaddr.o): in functionpcap_nametoproto': (.text+0x583): warning: Using 'getprotobyname_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libpcap.a(pcap-dbus.o): in function dbus_write': (.text+0x103): undefined reference todbus_message_demarshal' /usr/bin/ld: (.text+0x119): undefined reference to dbus_connection_send' /usr/bin/ld: (.text+0x122): undefined reference todbus_connection_flush' /usr/bin/ld: (.text+0x12a): undefined reference to dbus_message_unref' /usr/bin/ld: (.text+0x178): undefined reference todbus_error_free' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libpcap.a(pcap-dbus.o): in function dbus_read': (.text+0x1c3): undefined reference todbus_connection_pop_message' /usr/bin/ld: (.text+0x1e1): undefined reference to dbus_connection_pop_message' /usr/bin/ld: (.text+0x1f6): undefined reference todbus_connection_read_write' /usr/bin/ld: (.text+0x262): undefined reference to dbus_message_is_signal' /usr/bin/ld: (.text+0x27f): undefined reference todbus_message_marshal' /usr/bin/ld: (.text+0x2e3): undefined reference to dbus_free' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libpcap.a(pcap-dbus.o): in functiondbus_cleanup': (.text+0x350): undefined reference to dbus_connection_unref' /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/libpcap.a(pcap-dbus.o): in functiondbus_activate': (.text+0x3fa): undefined reference to dbus_connection_open' /usr/bin/ld: (.text+0x412): undefined reference todbus_bus_register' /usr/bin/ld: (.text+0x505): undefined reference to dbus_bus_add_match' /usr/bin/ld: (.text+0x50d): undefined reference todbus_error_is_set' /usr/bin/ld: (.text+0x53b): undefined reference to dbus_bus_get' /usr/bin/ld: (.text+0x56c): undefined reference todbus_error_free' /usr/bin/ld: (.text+0x57c): undefined reference to dbus_bus_add_match' /usr/bin/ld: (.text+0x584): undefined reference todbus_error_is_set' /usr/bin/ld: (.text+0x5b9): undefined reference to dbus_error_free' /usr/bin/ld: (.text+0x5c5): undefined reference todbus_connection_unref' /usr/bin/ld: (.text+0x61e): undefined reference to dbus_bus_get' /usr/bin/ld: (.text+0x65a): undefined reference todbus_error_free' /usr/bin/ld: (.text+0x675): undefined reference to dbus_connection_set_max_received_size' /usr/bin/ld: (.text+0x686): undefined reference todbus_connection_unref' /usr/bin/ld: (.text+0x704): undefined reference to `dbus_error_free' collect2: error: ld returned 1 exit status

Is there anything I am missing here?

novitoll commented 3 months ago

See https://github.com/google/gopacket/issues/734.