blueprint-freespeech / ricochet-refresh

Anonymous peer-to-peer instant messaging
https://www.ricochetrefresh.net
Other
157 stars 27 forks source link

Fails to link `ricochet-refresh` due to missing symbol related to `abseil` #178

Closed odiferousmint closed 8 months ago

odiferousmint commented 8 months ago

Hello.

When trying to compile, I get the following error:

[100%] Linking CXX executable ricochet-refresh/ricochet-refresh
/usr/bin/ld: ../libtego/libtego.a(ControlChannel.pb.cc.o): undefined reference to symbol '_ZN4absl12lts_2023080212log_internal17MakeCheckOpStringIllEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEET_T0_PKc'
/usr/bin/ld: /usr/lib/libabsl_log_internal_check_op.so.2308.0.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [ricochet-refresh/CMakeFiles/ricochet-refresh.dir/build.make:433: ricochet-refresh/ricochet-refresh/ricochet-refresh] Error 1
make[1]: *** [CMakeFiles/Makefile2:305: ricochet-refresh/CMakeFiles/ricochet-refresh.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Any ideas?

pospeselr commented 8 months ago

The abseil dependency is coming from protobuf which was added in the 3.22 series (which is why we build against the 3.21 series in the official releases: https://github.com/blueprint-freespeech/ricochet-build/blob/6cec75b70cfdd6d237ceb2d66328960afb33b073/rbm.conf#L66)

For a local build you should be able to install the abseil the abseil dev package for your distro.

odiferousmint commented 8 months ago

The abseil dependency is coming from protobuf which was added in the 3.22 series (which is why we build against the 3.21 series in the official releases: https://github.com/blueprint-freespeech/ricochet-build/blob/6cec75b70cfdd6d237ceb2d66328960afb33b073/rbm.conf#L66)

For a local build you should be able to install the abseil the abseil dev package for your distro.

Yeah, I have it installed yet I get the error. Perhaps the installed version is too old or new (https://voidlinux.org/packages/?arch=x86_64&q=abseil). Installed version is 20230802.1. I will try with a different version.

odiferousmint commented 8 months ago

Alright, so:

[ 70%] Built target ricochet-refresh_autogen
[ 71%] Linking CXX executable ricochet-refresh/ricochet-refresh
/usr/bin/ld: ../libtego/libtego.a(ControlChannel.pb.cc.o): undefined reference to symbol '_ZN4absl12lts_2023080212log_internal17MakeCheckOpStringIllEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEET_T0_PKc'
/usr/bin/ld: /usr/lib/libabsl_log_internal_check_op.so.2308.0.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [ricochet-refresh/CMakeFiles/ricochet-refresh.dir/build.make:433: ricochet-refresh/ricochet-refresh/ricochet-refresh] Error 1
make[1]: *** [CMakeFiles/Makefile2:305: ricochet-refresh/CMakeFiles/ricochet-refresh.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
$ objdump -S /usr/lib/libabsl_log_internal_check_op.so | grep _ZN4absl12lts_2023080212log_internal17MakeCheckOpStringIllEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEET_T0_PKc

0000000000004000 <_ZN4absl12lts_2023080212log_internal17MakeCheckOpStringIllEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEET_T0_PKc@@Base>:
    4099:   74 0e                   je     40a9 <_ZN4absl12lts_2023080212log_internal17MakeCheckOpStringIllEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEET_T0_PKc@@Base+0xa9>
    4109:   75 0f                   jne    411a <_ZN4absl12lts_2023080212log_internal17MakeCheckOpStringIllEEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEET_T0_PKc@@Base+0x11a>

It seems like that the .so file mentioned in the linking error includes the relevant symbols.

Any ideas where to go from here?

milahu commented 5 months ago

fixed in #182