Skip to content
This repository has been archived by the owner on Apr 25, 2024. It is now read-only.

libstdc++fs not available on ARM (qemu)? #118

Closed
chrberger opened this issue Nov 20, 2016 · 5 comments
Closed

libstdc++fs not available on ARM (qemu)? #118

chrberger opened this issue Nov 20, 2016 · 5 comments
Assignees

Comments

@chrberger
Copy link
Member

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?

@bjornborg
Copy link
Member

This is fixed.

@agdkyang
Copy link

agdkyang commented Mar 4, 2022

@bjornborg Hi,how to fix the bug, I can't find where to download libstdc++fs for ARM system.

@bjornborg
Copy link
Member

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)

@agdkyang
Copy link

agdkyang commented Mar 4, 2022

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.

@bjornborg
Copy link
Member

Hi @agdkyang, I don't think #include <experimental/filesystem> is needed anymore. You can simply include #include <filesystem> when using c++17 standard.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants