Linux how to compile binary with static sharedobjects embedded instead of dynamic to use on multi-distributions and avoid glibc compatiblity issues

One simple flag to configure will create a makefile that statically links all the shared objects and embeds them instead the binary execute.  This means as long as you have the same architecture that things should run.

Eg. if you have an old version of Debian with a different version of glibc, then this will solve that problem.

./configure LDFLAGS="-static"

To test that it is really statically linked run ldd:

ldd src/wget
    not a dynamic executable

Whereas the standard dynamic binary will be linked to a bunch of .so shared object files which is obviously a pain if making your own Linux distro or needing portability between distros.

 ldd /usr/bin/wget
    linux-vdso.so.1 =>  (0x00007ffe59ded000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f8d3b786000)
    libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f8d3b581000)
    libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f8d3b319000)
    libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f8d3aed4000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f8d3acba000)
    libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00007f8d3aa87000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8d3a6bd000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8d3a4a0000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f8d3bc70000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8d3a29c000)

 


Tags:

linux, compile, binary, static, sharedobjects, embedded, dynamic, multi, distributions, glibc, compatiblity, issuesone, configure, makefile, statically, links, objects, embeds, execute, architecture, eg, debian, ldflags, quot, linked, ldd, src, wget, executable, whereas, distro, portability, distros, usr, bin, vdso, ffe, ded, libpcre, lib, _, gnu, libuuid, libssl, libcrypto, aed, libz, acba, libidn, aa, libc, bd, libpthread, ld, bc, libdl,

Latest Articles

  • Linux and Windows Dual Boot Issue NIC Won't work After Booting Windows
  • Cisco CME How To Enable ACD hunt groups
  • How to install gns3 on Linux Ubuntu Mint
  • How to convert audio for Asterisk .wav format
  • Using Cisco CME Router with Asterisk as a dial-peer
  • Cisco CME How To Configure SIP Trunk VOIP
  • Virtualbox host Only Network Error Failed to save host network interface parameter - Cannot change gateway IP of host only network
  • Cisco CME and C7200 Router Testing and Learning Environment on Ubuntu 20+ Setup Tutorial Guide
  • Abusive IP ranges blacklist
  • How to Install Any OS on a Physical Drive from Windows Using VMware Workstation (Linux, Windows, BSD)
  • CDN Cloudflare how to set and preserve the real IP of the client without modifying application code on Apache
  • CentOS 7 fix Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container error was 14: curl#6 -
  • Ubuntu Debian How To Install Recommended Packages Automatically
  • How to set Linux Ubuntu Redhat Debian Command Line http https socks proxy for yum apt
  • How to resize a pdf without losing much quality in Linux Mint Ubuntu Debian Redhat Solution
  • qemu: could not load PC BIOS 'bios-256k.bin' solution
  • Proxmox How To Custom Partition During Install
  • Hyper-V Linux VM Boots to Black Screen, Storage, NIC Not Found Issues
  • Ubuntu Mint How to Fix Missing/Broken /dev and /dev/pts which causes terminal to immediately close exit and not work
  • How high can a Xeon CPU get?