ClickHouse / clickhouse-odbc

ODBC driver for ClickHouse
https://clickhouse.tech
Apache License 2.0
239 stars 84 forks source link

The driver is obviously wrong #428

Open alexey-milovidov opened 10 months ago

alexey-milovidov commented 10 months ago

This is a wrong practice and not going to work:

milovidov@milovidov-desktop:~/work/clickhouse-odbc/build$ ldd driver/libclickhouseodbc.so 
        linux-vdso.so.1 (0x00007fffab910000)
        libodbcinst.so.2 => /lib/x86_64-linux-gnu/libodbcinst.so.2 (0x00007fd6f8cc3000)
        libicuuc.so.70 => /lib/x86_64-linux-gnu/libicuuc.so.70 (0x00007fd6f8ac8000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd6f889c000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd6f87b5000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd6f8795000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd6f856b000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fd6f9191000)
        libltdl.so.7 => /lib/x86_64-linux-gnu/libltdl.so.7 (0x00007fd6f8560000)
        libicudata.so.70 => /lib/x86_64-linux-gnu/libicudata.so.70 (0x00007fd6f6942000)

The right way to build a self-contained shared library is to use --whole-archive and to remove all irrelevant symbols with a linker script. I did it initially: https://github.com/ClickHouse/clickhouse-odbc/commit/ff642ef4e616291a59fb4b3cc8c9c2639cc0e615

mshustov commented 2 weeks ago

related https://github.com/ClickHouse/clickhouse-odbc/issues/245