Skip to content

Instantly share code, notes, and snippets.

@stain
Last active May 22, 2017 08:06
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stain/8335322 to your computer and use it in GitHub Desktop.
Save stain/8335322 to your computer and use it in GitHub Desktop.
Even with --enable-static to graphvis 2.28.0, the dot_static is not very static. The second half of the gist shows how to compile it with minimal dynamic dependencies on Linux x64
debian5i386:~/graphviz-2.28.0/cmd/dot# ldd ./dot_static
linux-gate.so.1 => (0xb76ff000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb76d1000)
libgd.so.2 => /usr/lib/libgd.so.2 (0xb7690000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0xb7670000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb764c000)
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7626000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb75fb000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb7586000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7571000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb756d000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7411000)
libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb73f8000)
/lib/ld-linux.so.2 (0xb7700000)
debian5i386:~/graphviz-2.28.0/cmd/dot# rm dot_static ; make CCLD="echo gcc"
CCLD dot_static
gcc -g -O2 -Wno-unknown-pragmas -Wstrict-prototypes -Wpointer-arith -Wall -ffast-math -o dot_static dot_static-dot.o dot_static-dot_builtins.o -L/usr/local/lib ../../plugin/dot_layout/.libs/libgvplugin_dot_layout_C.a ../../plugin/neato_layout/.libs/libgvplugin_neato_layout_C.a ../../plugin/core/.libs/libgvplugin_core_C.a ../../lib/gvc/.libs/libgvc_C.a ../../lib/pathplan/.libs/libpathplan_C.a ../../lib/graph/.libs/libgraph_C.a ../../lib/xdot/.libs/libxdot_C.a ../../lib/cdt/.libs/libcdt_C.a /usr/lib/libexpat.so ../../plugin/gd/.libs/libgvplugin_gd_C.a /usr/lib/libgd.so -L/usr/lib /usr/lib/libjpeg.so -lpng12 -lm -lfontconfig /usr/lib/libfreetype.so -lpng -lz -ldl
debian5i386:~/graphviz-2.28.0/cmd/dot# gcc -g -O2 -Wno-unknown-pragmas -Wstrict-prototypes -Wpointer-arith -Wall -ffast-math -o dot_static dot_static-dot.o dot_static-dot_builtins.o -L/usr/local/lib ../../plugin/dot_layout/.libs/libgvplugin_dot_layout_C.a ../../plugin/neato_layout/.libs/libgvplugin_neato_layout_C.a ../../plugin/core/.libs/libgvplugin_core_C.a ../../lib/gvc/.libs/libgvc_C.a ../../lib/pathplan/.libs/libpathplan_C.a ../../lib/graph/.libs/libgraph_C.a ../../lib/xdot/.libs/libxdot_C.a ../../lib/cdt/.libs/libcdt_C.a /usr/lib/libexpat.a ../../plugin/gd/.libs/libgvplugin_gd_C.a /usr/lib/libgd.a -L/usr/lib /usr/lib/libjpeg.a /usr/lib/libpng.a /usr/lib/libfreetype.a /usr/lib/libz.a /usr/lib/libm.a -ldl
debian5i386:~/graphviz-2.28.0/cmd/dot# ldd ./dot_static
linux-gate.so.1 => (0xb7727000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb771b000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb75c0000)
/lib/ld-linux.so.2 (0xb7728000)
debian5i386:~/graphviz-2.28.0/cmd/dot# shasum dot_static
a6d0b127ff2ef4ad6de1dbecde355eadc9ec2445 dot_static
debian5x64:~/graphviz-2.28.0/cmd/dot# make dot_static
make: `dot_static' is up to date.
debian5x64:~/graphviz-2.28.0/cmd/dot# rm dot_static ; make dot_static
CCLD dot_static
debian5x64:~/graphviz-2.28.0/cmd/dot# ldd ./dot_static
linux-vdso.so.1 => (0x00007fff1afab000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f93ed9f3000)
libgd.so.2 => /usr/lib/libgd.so.2 (0x00007f93ed7ae000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x00007f93ed58c000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00007f93ed367000)
libm.so.6 => /lib/libm.so.6 (0x00007f93ed0e4000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00007f93eceb3000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007f93ecc2f000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f93eca18000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f93ec814000)
libc.so.6 => /lib/libc.so.6 (0x00007f93ec4c1000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f93ec2a5000)
/lib64/ld-linux-x86-64.so.2 (0x00007f93edc1c000)
debian5x64:~/graphviz-2.28.0/cmd/dot# shasum dot_static
ce43483f11f607c8fce2984e66470c7f775a9b4b dot_static
debian5x64:~/graphviz-2.28.0/cmd/dot# gcc -g -O2 -Wno-unknown-pragmas -Wstrict-prototypes -Wpointer-arith -Wall -ffast-math -o dot_static dot_static-dot.o dot_static-dot_builtins.o -L/usr/local/lib ../../plugin/dot_layout/.libs/libgvplugin_dot_layout_C.a ../../plugin/neato_layout/.libs/libgvplugin_neato_layout_C.a ../../plugin/core/.libs/libgvplugin_core_C.a ../../lib/gvc/.libs/libgvc_C.a ../../lib/pathplan/.libs/libpathplan_C.a ../../lib/graph/.libs/libgraph_C.a ../../lib/xdot/.libs/libxdot_C.a ../../lib/cdt/.libs/libcdt_C.a -L/usr/lib64 ../../plugin/gd/.libs/libgvplugin_gd_C.a /usr/lib/libgd.a /usr/lib/libpng.a /usr/lib/libjpeg.a /usr/lib/libz.a /usr/lib/libm.a /usr/lib/libexpat.a -L/usr/lib /usr/lib/libfreetype.a -ldl
debian5x64:~/graphviz-2.28.0/cmd/dot# ldd ./dot_static
linux-vdso.so.1 => (0x00007fff463ff000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f4302731000)
libc.so.6 => /lib/libc.so.6 (0x00007f43023de000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4302935000)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment