[Interest] update on building Qt/Linux with clang?

Konstantin Tokarev annulen at yandex.ru
Wed Nov 7 03:05:43 CET 2018



05.11.2018, 23:31, "Thiago Macieira" <thiago.macieira at intel.com>:
> On Monday, 5 November 2018 11:33:58 PST René J.V. Bertin wrote:
>>  On Monday November 05 2018 12:03:31 René J.V. Bertin wrote:
>>  >In my experience clang generates significantly more compact binaries
>>
>>  Quite: bzipped tarballs of everything except the examples, translations,
>>  QWE, QtWebView and Qt3D:
>
> Off-topic: no one uses bzip2 anymore. It's slow to compress, slow to
> decompress and produces worse results than xz.

bzip2 still has one valid use case: it requires less memory for compression

>
>>  -rw-r--r-- 1 root root 363M Sep 8 13:22
>>  qt5-kde-devel-5.9.6.linux_3.x86_64.tbz2 (1003Mb uncompressed tarball)
>>  -rw-r--r-- 1 root root 199M Nov 5 19:22
>>  qt5-kde-devel-5.9.7.linux_3.x86_64.tbz2 (710Mb uncompressed tarball)
>>
>>  The first built with GCC 8, the 2nd with clang 6.0; identical compiler
>>  options (release build, -O3, force_debug_info for qtbase).
>
> Please compare debug-stripped binaries.
>
>    text data bss dec hex filename
> 7205857 200632 1714 7408203 710a4b lib/libQt5Widgets.so
> 6727027 197920 1576 6926523 69b0bb clang/libQt5Widgets.so
>
> Both are -O3 -march=native -g1 builds. So yes, the Clang build is smaller, but
> not significantly so. And since -O3 means "aggressively optimise, even if it
> takes longer to compile or increases the size considerably", you don't really
> care about size. Bigger code could indicate more optimisations applied (loop
> unrolling, vectorisation).
>
> Anyway, compare the debug sections of the two:
>
> GCC:
> Section Headers:
> [Nr] Name Type Off Size ES Flags Lk Inf Al
> [29] .debug_line PROGBITS 00710a80 002c360b 0 0 0 1
> [30] .debug_info PROGBITS 009d408b 00567018 0 0 0 1
> [31] .debug_abbrev PROGBITS 00f3b0a3 0002813a 0 0 0 1
> [32] .debug_aranges PROGBITS 00f631e0 0000fd70 0 0 0 16
> [33] .debug_str PROGBITS 00f72f50 001f84b5 1 MS 0 0 1
> [34] .debug_ranges PROGBITS 0116b410 002f3a20 0 0 0 16
>
> Clang:
> [28] .debug_aranges PROGBITS 0069c0a0 00000080 0 0 0 16
> [29] .debug_info PROGBITS 0069c120 004b52fc 0 0 0 1
> [30] .debug_abbrev PROGBITS 00b5141c 00006dea 0 0 0 1
> [31] .debug_line PROGBITS 00b58206 0032d586 0 0 0 1
> [32] .debug_str PROGBITS 00e8578c 000377fb 1 MS 0 0 1
> [33] .debug_macinfo PROGBITS 00ebcf87 000000b6 0 0 0 1
> [34] .debug_ranges PROGBITS 00ebd040 00135ff0 0 0 0 16
>
> Clang carries 9793421 bytes of debug information, while GCC produces 13951906.
> That's a much bigger difference.
>
> --
> Thiago Macieira - thiago.macieira (AT) intel.com
>   Software Architect - Intel Open Source Technology Center
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest

-- 
Regards,
Konstantin




More information about the Interest mailing list