bitcoin/bitcoin — pull request #4284 by theuni (2014-06-04 05:49:02+00:00)
Title: Linux static qt5

This bumps linux+qt up to static 5.2.1 to match osx and (soon) windows. It should result in a much more portable release binary, since it does not depend on the user having qt installed. It does away with the current scary combination of qt4.6 headers and qt4.8 libs.

The nasty graphics dependencies (x11, xcb, etc) are kept to an absolute minimum. This build uses qt's built-in xcb libs and dyloaders in order to reduce the runtime dependencies on xcb* and x11. The end-result is that only libxcb is required at runtime. Other dependencies on freetype/fontconfig may be reduced to static libs as well if desired.

From my quick tests, this is fully working. All builds are deterministic, and no new glibc/libstdc++ symbols have been introduced as far as I can tell.

The only thing that I'm aware of which requires more testing is qt's internal translations, which may need to be statically linked as well.

Full dependencies:

Before:
```
linux-gate.so.1 => (0xf7715000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf6b3c000)
libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0xf606b000)
libQtNetwork.so.4 => /usr/lib/i386-linux-gnu/libQtNetwork.so.4 (0xf5f27000)
libQtCore.so.4 => /usr/lib/i386-linux-gnu/libQtCore.so.4 (0xf5c3f000)
libQtDBus.so.4 => /usr/lib/i386-linux-gnu/libQtDBus.so.4 (0xf5bc1000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf5ba6000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf5abd000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf5a79000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf5a5c000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf58a8000)
libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xf586f000)
libaudio.so.2 => /usr/lib/i386-linux-gnu/libaudio.so.2 (0xf5856000)
libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xf5754000)
libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xf572b000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf5712000)
libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xf5677000)
libgobject-2.0.so.0 => /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 (0xf5627000)
libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6 (0xf561d000)
libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6 (0xf5603000)
libXi.so.6 => /usr/lib/i386-linux-gnu/libXi.so.6 (0xf55f3000)
libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xf55e9000)
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf55d7000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf549f000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf549a000)
/lib/ld-linux.so.2 (0xf7716000)
libQtXml.so.4 => /usr/lib/i386-linux-gnu/libQtXml.so.4 (0xf545a000)
libdbus-1.so.3 => /lib/i386-linux-gnu/libdbus-1.so.3 (0xf5410000)
libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xf53e8000)
libXt.so.6 => /usr/lib/i386-linux-gnu/libXt.so.6 (0xf538b000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf5387000)
libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xf5346000)
libffi.so.6 => /usr/lib/i386-linux-gnu/libffi.so.6 (0xf533f000)
libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xf5339000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf5316000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf530f000)
```
After:
```
linux-gate.so.1 => (0xf7707000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf5b5a000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf5b38000)
libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xf5afe000)
libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xf5a63000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf5a48000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf5a2f000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf5a2a000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf59e6000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf58fd000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf58e0000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf572c000)
/lib/ld-linux.so.2 (0xf7708000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf5728000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf5720000)
libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xf56f8000)
```
Note that libXau.so, libXdmcp.so, and libexpat.so are indirect dependencies.