When i build qbittorrent i have chosen to include ICU as the dependencies seemed to prefer this (boost and i think libtorrent). I say preferred because we can consider this example when building.
Using Debian Buster I already have libc6-dev installed (iconv-dev) and if i build my partially static build i will get this result for functional qbittorrent-nox binary
This is what i expect to see even when include ICU statically built but since i am deliberately skipping that part it is not present.
Code: Select all
linux-vdso.so.1 (0x00007ffcc855f000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd78831e000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd788319000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd788195000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd788012000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd787ff8000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd787e37000) /lib64/ld-linux-x86-64.so.2 (0x00007fd7896e5000)
If i now install libicu-dev the dependencies will prefer this when configuring and compiling, with no specific instructions given to do so, and will include links to this in the compiled qbittorrent-nox giving me this outcome instead.
Conclusion and question:
Code: Select all
linux-vdso.so.1 (0x00007ffc2888a000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7335992000) libicui18n.so.63 => /lib/x86_64-linux-gnu/libicui18n.so.63 (0x00007f73356b7000) libicuuc.so.63 => /lib/x86_64-linux-gnu/libicuuc.so.63 (0x00007f73354e8000) libicudata.so.63 => /lib/x86_64-linux-gnu/libicudata.so.63 (0x00007f7333af8000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7333af3000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f733396f000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f73337ea000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f73337d0000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f733360f000) /lib64/ld-linux-x86-64.so.2 (0x00007f7336ce2000)
When IO build the fully static built the above issue is relevant as that is when the file size will differ. Either 20Mb (no ICU) or 50Mb (with ICU), Due to the apparent preference of the dependencies to use ICU i would assume the end result is better for this but i am unsure from a technical point of view and need some input.
A considerable difference. So the questions are:
What is the relevance of this to the final compiled binary of ICU?
Is it better to have ICU or does it make little difference to not include get a significantly smaller ting a smaller file size?