I am trying to create a relocatable (zero dependencies) mongodb v4.0 build compiled on Debian Jessie to run it on Debian Buster.
Mongo 4 requires gcc 5.5:
Checking if C++ compiler is GCC 5.3.0 or newer...no
Debian Jessie has gcc 4.9, so I decided to compile gcc 5.5.0 from source for that.
Then following this advice: Multiple glibc libraries on a single host
I copied all the referenced libs
LD_LIBRARY_PATH=/drone/src/mongodb-4/build/mongodb-4/lib
ldd /drone/src/mongodb-4/build/mongodb-4/bin/mongod.bin
linux-vdso.so.1 (0x00007ffff825d000)
libcurl.so.4 => /drone/src/mongodb-4/build/mongodb-4/lib/libcurl.so.4 (0x00007f9c85cb7000)
libresolv.so.2 => /drone/src/mongodb-4/build/mongodb-4/lib/libresolv.so.2 (0x00007f9c85aa0000)
librt.so.1 => /drone/src/mongodb-4/build/mongodb-4/lib/librt.so.1 (0x00007f9c85898000)
libdl.so.2 => /drone/src/mongodb-4/build/mongodb-4/lib/libdl.so.2 (0x00007f9c85694000)
libstdc++.so.6 => /drone/src/mongodb-4/build/mongodb-4/lib/libstdc++.so.6 (0x00007f9c85318000)
libm.so.6 => /drone/src/mongodb-4/build/mongodb-4/lib/libm.so.6 (0x00007f9c85017000)
libgcc_s.so.1 => /drone/src/mongodb-4/build/mongodb-4/lib/libgcc_s.so.1 (0x00007f9c84e01000)
libpthread.so.0 => /drone/src/mongodb-4/build/mongodb-4/lib/libpthread.so.0 (0x00007f9c84be4000)
libc.so.6 => /drone/src/mongodb-4/build/mongodb-4/lib/libc.so.6 (0x00007f9c84839000)
libidn.so.11 => /drone/src/mongodb-4/build/mongodb-4/lib/libidn.so.11 (0x00007f9c84605000)
librtmp.so.1 => /drone/src/mongodb-4/build/mongodb-4/lib/librtmp.so.1 (0x00007f9c843e8000)
libssh2.so.1 => /drone/src/mongodb-4/build/mongodb-4/lib/libssh2.so.1 (0x00007f9c841bf000)
libssl.so.1.0.0 => /drone/src/mongodb-4/build/mongodb-4/lib/libssl.so.1.0.0 (0x00007f9c83f5e000)
libcrypto.so.1.0.0 => /drone/src/mongodb-4/build/mongodb-4/lib/libcrypto.so.1.0.0 (0x00007f9c83b61000)
libgssapi_krb5.so.2 => /drone/src/mongodb-4/build/mongodb-4/lib/libgssapi_krb5.so.2 (0x00007f9c83916000)
libkrb5.so.3 => /drone/src/mongodb-4/build/mongodb-4/lib/libkrb5.so.3 (0x00007f9c83642000)
libk5crypto.so.3 => /drone/src/mongodb-4/build/mongodb-4/lib/libk5crypto.so.3 (0x00007f9c83411000)
libcom_err.so.2 => /drone/src/mongodb-4/build/mongodb-4/lib/libcom_err.so.2 (0x00007f9c8320d000)
liblber-2.4.so.2 => /drone/src/mongodb-4/build/mongodb-4/lib/liblber-2.4.so.2 (0x00007f9c82ffe000)
libldap_r-2.4.so.2 => /drone/src/mongodb-4/build/mongodb-4/lib/libldap_r-2.4.so.2 (0x00007f9c82dac000)
libz.so.1 => /drone/src/mongodb-4/build/mongodb-4/lib/libz.so.1 (0x00007f9c82b91000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9c89171000)
libgnutls-deb0.so.28 => /drone/src/mongodb-4/build/mongodb-4/lib/libgnutls-deb0.so.28 (0x00007f9c8286b000)
libhogweed.so.2 => /drone/src/mongodb-4/build/mongodb-4/lib/libhogweed.so.2 (0x00007f9c8263c000)
libnettle.so.4 => /drone/src/mongodb-4/build/mongodb-4/lib/libnettle.so.4 (0x00007f9c8240a000)
libgmp.so.10 => /drone/src/mongodb-4/build/mongodb-4/lib/libgmp.so.10 (0x00007f9c82187000)
libgcrypt.so.20 => /drone/src/mongodb-4/build/mongodb-4/lib/libgcrypt.so.20 (0x00007f9c81ea5000)
libkrb5support.so.0 => /drone/src/mongodb-4/build/mongodb-4/lib/libkrb5support.so.0 (0x00007f9c81c99000)
libkeyutils.so.1 => /drone/src/mongodb-4/build/mongodb-4/lib/libkeyutils.so.1 (0x00007f9c81a95000)
libsasl2.so.2 => /drone/src/mongodb-4/build/mongodb-4/lib/libsasl2.so.2 (0x00007f9c81879000)
libp11-kit.so.0 => /drone/src/mongodb-4/build/mongodb-4/lib/libp11-kit.so.0 (0x00007f9c81633000)
libtasn1.so.6 => /drone/src/mongodb-4/build/mongodb-4/lib/libtasn1.so.6 (0x00007f9c8141f000)
libgpg-error.so.0 => /drone/src/mongodb-4/build/mongodb-4/lib/libgpg-error.so.0 (0x00007f9c8120d000)
libffi.so.6 => /drone/src/mongodb-4/build/mongodb-4/lib/libffi.so.6 (0x00007f9c81004000)
I had to use libstdc++.so.*
and libgcc_s.so.*
from my gcc 5 build.
At this point all is fine:
/drone/src/mongodb-4/build/mongodb-4/bin/mongod --version
db version v4.0.21
git version: 3f68a848c68e993769589dc18e657728921d8367
allocator: tcmalloc
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
But when I try to run dynamic linker directly on Jessie (to bring it with me to Buster) I get a segmentation fault:
/lib64/ld-linux-x86-64.so.2 /drone/src/mongodb-4/build/mongodb-4/bin/mongod.bin --version
12465 Segmentation fault (core dumped)
Am I doing it wrong?
Is there any way to debug it?