Static build


(Mterron) #1

Can we get a statically compiled binary instead of the current dynamic linked one? I'd like to use Filebeat on a non glibc based system.

This is what the current x86-64 binary looks like:
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, not stripped

This is what a working golang app looks like on my system:
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

Thanks


Unable to connect to ELK server through a Client server with Filebeat configured
(Andrew Kroh) #2

Yeah, we should be able to provide a statically linked binary. It is interesting that the binary is dynamically linked. That must be caused by the way it gets built through beats-packer. When using the straight make crosscompile target for the project it generates mostly all statically linked binaries.

$ make crosscompile
$ cd bin
$ file *
filebeat-darwin-386:        Mach-O i386 executable
filebeat-darwin-amd64:      Mach-O 64-bit x86_64 executable
filebeat-dragonfly-amd64:   ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
filebeat-freebsd-386:       ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), statically linked, not stripped
filebeat-freebsd-amd64:     ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), statically linked, not stripped
filebeat-freebsd-arm:       ELF 32-bit LSB executable, ARM, EABI5 version 1 (FreeBSD), statically linked, not stripped
filebeat-linux-386:         ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
filebeat-linux-386-387:     ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
filebeat-linux-amd64:       ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
filebeat-linux-arm:         ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped
filebeat-linux-arm-arm5:    ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped
filebeat-linux-arm64:       ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, not stripped
filebeat-linux-ppc64:       ELF 64-bit MSB executable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), statically linked, not stripped
filebeat-linux-ppc64le:     ELF 64-bit LSB executable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), statically linked, not stripped
filebeat-netbsd-386:        ELF 32-bit LSB executable, Intel 80386, version 1 (NetBSD), statically linked, for NetBSD 5.99, not stripped
filebeat-netbsd-amd64:      ELF 64-bit LSB executable, x86-64, version 1 (NetBSD), statically linked, for NetBSD 5.99, not stripped
filebeat-netbsd-arm:        ELF 32-bit LSB executable, ARM, version 1 (NetBSD), statically linked, for NetBSD 5.99, not stripped
filebeat-openbsd-386:       ELF 32-bit LSB executable, Intel 80386, version 1 (OpenBSD), statically linked, for OpenBSD, not stripped
filebeat-openbsd-amd64:     ELF 64-bit LSB executable, x86-64, version 1 (OpenBSD), statically linked, for OpenBSD, not stripped
filebeat-openbsd-arm:       ELF 32-bit LSB executable, ARM, version 1 (OpenBSD), statically linked, for OpenBSD, not stripped
filebeat-solaris-amd64:     ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/amd64/ld.so.1, not stripped
filebeat-windows-386.exe:   PE32 executable (console) Intel 80386 (stripped to external PDB), for MS Windows
filebeat-windows-amd64.exe: PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows

Looking at the binary from the download site I get:

$ curl https://download.elastic.co/beats/filebeat/filebeat-1.0.0-rc1-x86_64.tar.gz | tar xzv^C
$ file filebeat-1.0.0-rc1-x86_64/filebeat
filebeat-1.0.0-rc1-x86_64/filebeat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, not stripped

I created the issue below to track the problem. In the meantime you could download a binary from S3, which has binaries for each change to the master branch.


(system) #3