kiwix / kiwix-tools

Command line Kiwix tools: kiwix-serve, kiwix-manage, ...
https://download.kiwix.org/release/kiwix-tools/
GNU General Public License v3.0
407 stars 79 forks source link

ABI breakage causes kiwix-tools to not compile #645

Closed juuz0 closed 7 months ago

juuz0 commented 8 months ago
/usr/bin/ld: /usr/local/lib/x86_64-linux-gnu/libkiwix.so: undefined reference to `zim::Item::getPath[abi:cxx11]() const'
collect2: error: ld returned 1 exit status

I suspect this issue was introduced in: https://github.com/openzim/libzim/pull/836

mgautierfr commented 7 months ago

Which version of libzim do you using ? How do you compile kiwix-tools ?


openzim/libzim#836 is a ABI breakage, not a API. So recompiling should be ok.

juuz0 commented 7 months ago

Which version of libzim do you using ?

latest main branch

How do you compile kiwix-tools ?

the usual README way.

meson . build
sudo ninja -C build install

Full error:

[3/7] Linking target src/searcher/kiwix-search
FAILED: src/searcher/kiwix-search 
c++  -o src/searcher/kiwix-search src/searcher/kiwix-search.p/kiwix-search.cpp.o -Wl,--as-needed -Wl,--no-undefined -Wl,-rpath,/usr/local/lib/x86_64-linux-gnu -Wl,-rpath-link,/usr/local/lib/x86_64-linux-gnu -pthread -Wl,--start-group /usr/local/lib/x86_64-linux-gnu/libkiwix.so /usr/local/lib/x86_64-linux-gnu/libzim.so /usr/lib/x86_64-linux-gnu/liblzma.so /usr/lib/x86_64-linux-gnu/libzstd.so /usr/lib/x86_64-linux-gnu/libicui18n.so /usr/lib/x86_64-linux-gnu/libicuuc.so /usr/lib/x86_64-linux-gnu/libicudata.so /usr/lib/x86_64-linux-gnu/libpugixml.so /usr/lib/x86_64-linux-gnu/libcurl.so /usr/lib/x86_64-linux-gnu/libmicrohttpd.so /usr/lib/x86_64-linux-gnu/libxapian.so -Wl,--end-group
/usr/bin/ld: /usr/local/lib/x86_64-linux-gnu/libkiwix.so: undefined reference to `zim::Item::getPath[abi:cxx11]() const'
collect2: error: ld returned 1 exit status
[5/7] Linking target src/manager/kiwix-manage
FAILED: src/manager/kiwix-manage 
c++  -o src/manager/kiwix-manage src/manager/kiwix-manage.p/kiwix-manage.cpp.o -Wl,--as-needed -Wl,--no-undefined -Wl,-rpath,/usr/local/lib/x86_64-linux-gnu -Wl,-rpath-link,/usr/local/lib/x86_64-linux-gnu -pthread -Wl,--start-group /usr/local/lib/x86_64-linux-gnu/libkiwix.so /usr/local/lib/x86_64-linux-gnu/libzim.so /usr/lib/x86_64-linux-gnu/liblzma.so /usr/lib/x86_64-linux-gnu/libzstd.so /usr/lib/x86_64-linux-gnu/libicui18n.so /usr/lib/x86_64-linux-gnu/libicuuc.so /usr/lib/x86_64-linux-gnu/libicudata.so /usr/lib/x86_64-linux-gnu/libpugixml.so /usr/lib/x86_64-linux-gnu/libcurl.so /usr/lib/x86_64-linux-gnu/libmicrohttpd.so /usr/lib/x86_64-linux-gnu/libxapian.so -Wl,--end-group
/usr/bin/ld: /usr/local/lib/x86_64-linux-gnu/libkiwix.so: undefined reference to `zim::Item::getPath[abi:cxx11]() const'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

I suspect that commit/PR because https://github.com/openzim/libzim/commit/2a810acaddb9dc85224aa5222209fb92128f0159 compiles without any issues.

I'm on Ubuntu 23.10 gcc 13.2.0

mgautierfr commented 7 months ago

Which version of kiwix-tools are you using ? We have switch to cpp17 so we shouldn't have a [abi:cxx11].

juuz0 commented 7 months ago

kiwix-tools is also the latest/main branch, i was compiling it on a new installation. Apologies for the late reply. Let me know if I need to provide other info.

mgautierfr commented 7 months ago

c++ -o src/searcher/kiwix-search src/searcher/kiwix-search.p/kiwix-search.cpp.o -Wl,--as-needed -Wl,--no-undefined -Wl,-rpath,/usr/local/lib/x86_64-linux-gnu -Wl,-rpath-link,/usr/local/lib/x86_64-linux-gnu -pthread -Wl,--start-group /usr/local/lib/x86_64-linux-gnu/libkiwix.so /usr/local/lib/x86_64-linux-gnu/libzim.so /usr/lib/x86_64-linux-gnu/liblzma.so /usr/lib/x86_64-linux-gnu/libzstd.so /usr/lib/x86_64-linux-gnu/libicui18n.so /usr/lib/x86_64-linux-gnu/libicuuc.so /usr/lib/x86_64-linux-gnu/libicudata.so /usr/lib/x86_64-linux-gnu/libpugixml.so /usr/lib/x86_64-linux-gnu/libcurl.so /usr/lib/x86_64-linux-gnu/libmicrohttpd.so /usr/lib/x86_64-linux-gnu/libxapian.so -Wl,--end-group /usr/bin/ld: /usr/local/lib/x86_64-linux-gnu/libkiwix.so: undefined reference to `zim::Item::getPath[abi:cxx11]() const' collect2: error: ld returned 1 exit status

You are linking with a "installed" libkiwix, not the one currently being compiled (and tested here).

You probably have a already (old version) libkiwix installed.

kelson42 commented 7 months ago

Yes, compilation/execution works with ubuntu 22.04. This is typically a sympton of linking against the wrong version of the library.