EternalTerminal icon indicating copy to clipboard operation
EternalTerminal copied to clipboard

build error: "/usr/bin/ld: cannot find -lstdc++fs: No such file or directory"

Open oliverkurth opened this issue 2 years ago • 4 comments

I am trying to build an RPM for ET in Photon 5.0, but I am running into this error:

[ 84%] Linking CXX executable htm
/usr/bin/cmake -E cmake_link_script CMakeFiles/htm.dir/link.txt --verbose=1
/usr/bin/c++ -O2 -g -DUSE_SENTRY -DELPP_NO_DEFAULT_LOG_FILE -DELPP_FEATURE_CRASH_LOG -DELPP_THREAD_SAFE -DELPP_STRICT_PERMISSIONS -DSENTRY_BUILD_STATIC -g -ggdb3 -DWITH_UTEMPTER -rdynamic CMakeFiles/htm.dir/src/htm/HtmClientMain.cpp.o -o htm  libHtmCommon.a libet-lib.a -lprotobuf-lite -lsodium -lutempter external_imported/sentry-native/libsentry.a /usr/lib/libssl.so /usr/lib/libz.so -lutil -lresolv -latomic -lstdc++fs /usr/lib/libcurl.so -Wl,-E,--build-id=sha1 -ldl -lrt external_imported/sentry-native/external/libbreakpad_client.a /usr/lib/libcrypto.so 
/usr/bin/ld: cannot find -lstdc++fs: No such file or directory
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/htm.dir/build.make:120: htm] Error 1
make[2]: Leaving directory '/usr/src/photon/BUILD/EternalTerminal-et-v6.2.1/x86_64-vmware-linux'
make[1]: *** [CMakeFiles/Makefile2:707: CMakeFiles/htm.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

I have the following build requires in the spec file:

BuildRequires:  boost-devel
BuildRequires:  cmake
BuildRequires:  gflags-devel
BuildRequires:  curl-devel
BuildRequires:  libsodium-devel
BuildRequires:  libstdc++-devel
BuildRequires:  libutempter-devel
BuildRequires:  ncurses-devel
BuildRequires:  openssl-devel
BuildRequires:  protobuf-devel
BuildRequires:  protobuf-c-static
BuildRequires:  protobuf-c-devel
BuildRequires:  systemd
BuildRequires:  zlib-devel

But it looks like there is something missing. I found this though with Google: https://stackoverflow.com/questions/74891427/make-error-library-not-found-for-lstdcfs , indicating it should actually not be necessary. Our version of libstdc++ is 12.2.0:

root [ ~ ]# tdnf info libstdc++-devel
Name          : libstdc++-devel
Arch          : x86_64
Epoch         : 0
Version       : 12.2.0
Release       : 1.ph5
...

oliverkurth avatar Jun 29 '23 19:06 oliverkurth

I could fix this by removing stdc++fs from CMakeLists.txt:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 47320878..39730bac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -274,7 +274,7 @@ else()
       util
       resolv
       atomic
-      stdc++fs)
+      )
 endif()
 
 IF(Unwind_FOUND)

A proper fix should probably involve checking for the libstdc++ version.

oliverkurth avatar Jul 01 '23 01:07 oliverkurth

Issue still exists in 6.2.8.

/usr/bin/c++ -O2 -g -DUSE_SENTRY -DELPP_NO_DEFAULT_LOG_FILE -DELPP_FEATURE_CRASH_LOG -DELPP_THREAD_SAFE -DELPP_STRICT_PERMISSIONS -DSENTRY_BUILD_STATIC -g -ggdb3 -DWITH_UTEMPTER -rdynamic "CMakeFiles/et-test.dir/test/BackedTest.cpp.o" "CMakeFiles/et-test.dir/test/ConnectionTest.cpp.o" "CMakeFiles/et-test.dir/test/CryptoHandlerTest.cpp.o" "CMakeFiles/et-test.dir/test/JumphostTest.cpp.o" "CMakeFiles/et-test.dir/test/ServerFifoPathTest.cpp.o" "CMakeFiles/et-test.dir/test/TerminalTest.cpp.o" "CMakeFiles/et-test.dir/test/Main.cpp.o" -o et-test  -Wl,-rpath,/usr/src/photon/BUILD/EternalTerminal-et-v6.2.8/x86_64-vmware-linux/external_imported/Catch2/src libTerminalCommon.a libet-lib.a external_imported/Catch2/src/libCatch2Main.so.3.3.2 -lprotobuf -lsodium -lutempter external_imported/sentry-native/libsentry.a /usr/lib/libssl.so /usr/lib/libcrypto.so /usr/lib/libz.so -lutil -lresolv -latomic -lstdc++fs external_imported/Catch2/src/libCatch2.so.3.3.2 /usr/lib/libcurl.so -ldl -lrt external_imported/sentry-native/external/libbreakpad_client.a 
/usr/bin/ld: cannot find -lstdc++fs: No such file or directory
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/et-test.dir/build.make:230: et-test] Error 1
make[2]: Leaving directory '/usr/src/photon/BUILD/EternalTerminal-et-v6.2.8/x86_64-vmware-linux'
make[1]: *** [CMakeFiles/Makefile2:929: CMakeFiles/et-test.dir/all] Error 2
make[1]: Leaving directory '/usr/src/photon/BUILD/EternalTerminal-et-v6.2.8/x86_64-vmware-linux'
make: *** [Makefile:169: all] Error 2

oliverkurth avatar Dec 12 '23 22:12 oliverkurth

Is this issue still present in 6.2.9?

MisterTea avatar Aug 07 '24 01:08 MisterTea