GeoscienceAustralia / ginan

The Australian Government, through Positioning Australia (part of Geoscience Australia), is funding the design, development and operational service of a Global Navigation Satellite System (GNSS) position correction system - the Ginan service and toolkit. The application of the Ginan correction service by a GNSS device has the potential to increase positioning accuracy from meters to centimetres across Australia. The suite of software systems in this repository (the Ginan toolkit) will be used to create the service. It is available now under an open source licence. Ginan will give individuals and organisations no-cost access to the Ginan software and service as a public good.
https://geoscienceaustralia.github.io/ginan/
Other
207 stars 95 forks source link

Linking against boost fails #55

Closed meerfrau closed 2 months ago

meerfrau commented 8 months ago

After building to 100 % (gcc 13.2, boost 1.83) the linking fails due to undefined references:

/usr/bin/ld: ./ginan/lib/libginan_core.a(acsConfig.cpp.o): in function `boost::log::v2s_mt_posix::aux::record_pump<boost::log::v2s_mt_posix::sources::severity_logger_mt<boost::log::v2s_mt_posix::trivial::severity_level> >::auto_release::~auto_release()':
/usr/include/boost/log/sources/record_ostream.hpp:493:(.text.unlikely+0xe9d): undefined reference to `boost::log::v2s_mt_posix::aux::stream_provider<char>::release_compound(boost::log::v2s_mt_posix::aux::stream_provider<char>::stream_compound*)'
/usr/bin/ld: ./ginan/lib/libginan_core.a(acsConfig.cpp.o): in function `boost::log::v2s_mt_posix::record::reset()':
/usr/include/boost/log/core/record.hpp:157:(.text.unlikely+0xeb0): undefined reference to `boost::log::v2s_mt_posix::record_view::public_data::destroy(boost::log::v2s_mt_posix::record_view::public_data const*)'

[..]

/usr/bin/ld: ./ginan/lib/libginan_core.a(acsConfig.cpp.o):(.data.rel.ro._ZTVN5boost15program_options11typed_valueISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EEcEE[_ZTVN5boost15program_options11typed_valueISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EEcEE]+0x38): undefined reference to `boost::program_options::value_semantic_codecvt_helper<char>::parse(boost::any&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool) const'
/usr/bin/ld: ./ginan/lib/libginan_core.a(acsConfig.cpp.o):(.data.rel.local.DW.ref._ZTIN5boost10filesystem16filesystem_errorE[DW.ref._ZTIN5boost10filesystem16filesystem_errorE]+0x0): undefined reference to `typeinfo for boost::filesystem::filesystem_error'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE

Are there special requirements regarding C++ mode or maximum Boost version?

OS: ArchLinux

seballgeyer commented 8 months ago

Hello,

We haven't tested Ginan with GCC13, we will have a look at it.

Could you please provide more information on the operating system you are using?

Thanks,

jiargei commented 8 months ago

I also had problems with Boost 1.78. I built Boost with 1.73 and compiled it with that and it worked! (Rocky Linux 8.5)

seballgeyer commented 8 months ago

Hello

could you provide more information on how both boost libraries were installed so we can try to reproduce the issue?

Thanks

jiargei commented 8 months ago

In my case (Rocky Linux 8) I had problems with the default boost version 1.78. The CMake could find it but during the make process it failed because it had no link to e.g. libboost_timer.a. I checked RL8 folder structure and there was no such file, but there was a libboost_timer.so.1.78.0 file. I checked the CMakeCache.txt and all vthe boost links had the same issue. By building libboost (1.73) this issue was resolved. I haven't checked it with a newer version.

Kind regards

Sebastien @.***> schrieb am Sa., 4. Nov. 2023, 00:16:

Hello

could you provide more information on how both boost libraries were installed so we can try to reproduce the issue?

Thanks

— Reply to this email directly, view it on GitHub https://github.com/GeoscienceAustralia/ginan/issues/55#issuecomment-1793230591, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD4YASTJKSFZYYVENR32SKDYCV3N7AVCNFSM6AAAAAA6YGQQKOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOJTGIZTANJZGE . You are receiving this because you commented.Message ID: @.***>

seballgeyer commented 8 months ago

From what you are saying, one of the issues is that GINAN is looking for static libraries (*.a). This is in the CMakelist.txt (line 174 ). You can try to comment on this line.

jiargei commented 8 months ago

It works now. One thing.. At least in Rocky Linux 8 i can compile it with boost 1.73 and 1.74. It fails with 1.76. One more issue is resolved with Pullrequest #58 (static_pointer_cast was not found).

jiargei commented 7 months ago

I just pulled the latest commit from develop-weekly branch. The pull request #58 would fix import issue on algebraTrace.cpp.