PDA

View Full Version : adding system libraries statically to Qt5 project



iskenderoguz
23rd July 2013, 08:18
I compiled Qt5 statically in Debian 7.1. I get this error when I tried to execute my app in Debian 5:


error while loading shared libraries: libxcb-glx.so.0: cannot open shared object file: No such file or directory

If I installed libxcb-glx package in Debian 5 error was gone. But I do not want this. My app should work in Debian 5 without installing any file.
Then I right-click my project title and select Add Library. There are 4 option in menu and I try all of them. Everytime my app gave same error.
So how can I add system libraries statically to my project?

Thanks.

ChrisW67
23rd July 2013, 08:59
You would have to identify every system library that Qt depends on, build a static version of it, and link to that static version.

iskenderoguz
23rd July 2013, 09:10
Thank you for your answer. Can you say how can I do this. Or is there any tutorial about it?

Also system libraries are:


linux-gate.so.1 => (0xb7759000)
libX11-xcb.so.1 => /usr/lib/i386-linux-gnu/libX11-xcb.so.1 (0xb7741000)
libXi.so.6 => /usr/lib/i386-linux-gnu/libXi.so.6 (0xb7732000)
libxcb-render-util.so.0 => /usr/lib/i386-linux-gnu/libxcb-render-util.so.0 (0xb772c000)
libxcb-glx.so.0 => /usr/lib/i386-linux-gnu/libxcb-glx.so.0 (0xb7713000)
libxcb-render.so.0 => /usr/lib/i386-linux-gnu/libxcb-render.so.0 (0xb7708000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb76e5000)
libxcb-image.so.0 => /usr/lib/i386-linux-gnu/libxcb-image.so.0 (0xb76df000)
libxcb-icccm.so.4 => /usr/lib/i386-linux-gnu/libxcb-icccm.so.4 (0xb76d7000)
libxcb-sync.so.0 => /usr/lib/i386-linux-gnu/libxcb-sync.so.0 (0xb76d1000)
libxcb-xfixes.so.0 => /usr/lib/i386-linux-gnu/libxcb-xfixes.so.0 (0xb76c9000)
libxcb-shm.so.0 => /usr/lib/i386-linux-gnu/libxcb-shm.so.0 (0xb76c5000)
libxcb-randr.so.0 => /usr/lib/i386-linux-gnu/libxcb-randr.so.0 (0xb76b9000)
libxcb-shape.so.0 => /usr/lib/i386-linux-gnu/libxcb-shape.so.0 (0xb76b4000)
libxcb-keysyms.so.1 => /usr/lib/i386-linux-gnu/libxcb-keysyms.so.1 (0xb76b0000)
libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xb767a000)
libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xb75de000)
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xb75cc000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xb7493000)
libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xb7489000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb7470000)
libicui18n.so.48 => /usr/lib/i386-linux-gnu/libicui18n.so.48 (0xb7296000)
libicuuc.so.48 => /usr/lib/i386-linux-gnu/libicuuc.so.48 (0xb712c000)
libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb7127000)
librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xb711e000)
libGL.so.1 => /usr/lib/i386-linux-gnu/libGL.so.1 (0xb70c4000)
libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xb70ab000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb6fbf000)
libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xb6f98000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb6f7b000)
libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb6e18000)
/lib/ld-linux.so.2 (0xb775a000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xb6e15000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xb6e0f000)
libxcb-util.so.0 => /usr/lib/i386-linux-gnu/libxcb-util.so.0 (0xb6e08000)
libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xb6dde000)
libicudata.so.48 => /usr/lib/i386-linux-gnu/libicudata.so.48 (0xb5c6d000)
libglapi.so.0 => /usr/lib/i386-linux-gnu/libglapi.so.0 (0xb5c57000)
libXdamage.so.1 => /usr/lib/i386-linux-gnu/libXdamage.so.1 (0xb5c53000)
libXfixes.so.3 => /usr/lib/i386-linux-gnu/libXfixes.so.3 (0xb5c4d000)
libXxf86vm.so.1 => /usr/lib/i386-linux-gnu/libXxf86vm.so.1 (0xb5c47000)
libdrm.so.2 => /usr/lib/i386-linux-gnu/libdrm.so.2 (0xb5c39000)

Debian 5 already has some of them. If copied nonexistent libraries from Debian 7 to Debian 5's usr/lib/ folder my app works.

marco-lucchini
9th October 2015, 09:18
Is there any follow up on this topic?
I am having the same problem.

I have statically built Qt5 on Linux (Ubuntu 14.04) 32 bit but it does not work on Linux 64-bit.

Error says:
"error while loading shared libraries: libxcb-render-util.so.0: cannot open shared object file: No such file or directory"

Is there any how-to with explanation on how to build a fully-independent Qt app using Linux 32 bit for Linux 64 bit?
Or on how to link the missing libraries to the executable file?
(It would be nice if this could be made via QtCreator)