libstdc++fs not available on ARM (qemu)?
chrberger opened this issue · 5 comments
Hi @olbender, our Jenkins failed to compile OpenDLV for ARM as libstdc++fs seems to be unavailable:
Output during CMake:
-- Could not find libstdc++fs.
Compilation output:
libopendlv-tools-signaladapterlib-static.a(signaladapter.cpp.o): In function opendlv::tools::signaladapter::SignalAdapter::GetListOfLibrariesToLoad(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&)': /opt/opendlv.sources/code/tools/signaladapter/src/signaladapter.cpp:93: undefined reference to
std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()'
/opt/opendlv.sources/code/tools/signaladapter/src/signaladapter.cpp:93: undefined reference to std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()' /opt/opendlv.sources/code/tools/signaladapter/src/signaladapter.cpp:93: undefined reference to
std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::operator*() const'
/opt/opendlv.sources/code/tools/signaladapter/src/signaladapter.cpp:93: undefined reference to std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::operator++()' /opt/opendlv.sources/code/tools/signaladapter/src/signaladapter.cpp:93: undefined reference to
std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()'
/opt/opendlv.sources/code/tools/signaladapter/src/signaladapter.cpp:93: undefined reference to std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()' /opt/opendlv.sources/code/tools/signaladapter/src/signaladapter.cpp:93: undefined reference to
std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()'
/opt/opendlv.sources/code/tools/signaladapter/src/signaladapter.cpp:93: undefined reference to std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()' /opt/opendlv.sources/code/tools/signaladapter/src/signaladapter.cpp:93: undefined reference to
std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()'
libopendlv-tools-signaladapterlib-static.a(signaladapter.cpp.o):/opt/opendlv.sources/code/tools/signaladapter/src/signaladapter.cpp:93: more undefined references to std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()' follow libopendlv-tools-signaladapterlib-static.a(signaladapter.cpp.o): In function
std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::recursive_directory_iterator(std::experimental::filesystem::v1::__cxx11::path const&)':
/usr/include/c++/5/experimental/fs_dir.h:269: undefined reference to std::experimental::filesystem::v1::__cxx11::recursive_directory_iterator::recursive_directory_iterator(std::experimental::filesystem::v1::__cxx11::path const&, std::experimental::filesystem::v1::directory_options, std::error_code*)' libopendlv-tools-signaladapterlib-static.a(signaladapter.cpp.o): In function
std::experimental::filesystem::v1::__cxx11::path::path<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::experimental::filesystem::v1::__cxx11::path>(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)':
/usr/include/c++/5/experimental/fs_path.h:167: undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
collect2: error: ld returned 1 exit status
signaladapter/CMakeFiles/opendlv-tools-signaladapter.dir/build.make:118: recipe for target 'signaladapter/opendlv-tools-signaladapter' failed
make[5]: *** [signaladapter/opendlv-tools-signaladapter] Error 1
CMakeFiles/Makefile2:87: recipe for target 'signaladapter/CMakeFiles/opendlv-tools-signaladapter.dir/all' failed
make[4]: *** [signaladapter/CMakeFiles/opendlv-tools-signaladapter.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make[3]: *** [all] Error 2
CMakeFiles/tools.dir/build.make:113: recipe for target 'tools-prefix/src/tools-stamp/tools-build' failed
make[2]: *** [tools-prefix/src/tools-stamp/tools-build] Error 2
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/tools.dir/all' failed
make[1]: *** [CMakeFiles/tools.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
Could you add a check in this CMakeLists.txt (https://github.com/chalmers-revere/opendlv/blob/master/code/tools/signaladapter/CMakeLists.txt) to make sure that this code is only compiled if libstdc++fs is present?
This is fixed.
@bjornborg Hi,how to fix the bug, I can't find where to download libstdc++fs for ARM system.
Hi,
I am kind of lost since you are bumping an old issue. Could you help reminding me of what bug you are experiencing?
I think it should be supported in newer c++17 standards (https://en.cppreference.com/w/cpp/filesystem)
Hi @bjornborg ,thank you for reply. When I compile the code with the head file #include <experimental/filesystem> on ARM system, the error "/usr/bin/ld : cannot find -lstdc++fs". But I don't know where to download library libstdc++fs.a.