hyrise: Linker error when linking to std::filesystem with clang on Pella

Linker fails when compiling hyriseTest or hyriseConsole with clang on Pella. The issue can be resolved by always using std::experimental::filesystem in filesystem.hpp. Although it only occurs on Pella and not on MacOs or Jenkins, I think that it is not caused by a wrong setup. I suspect that this stackoverflow anwser might solve this issue but I am unsure how to link to -lstdc++fs. Linker error:

[100%] Linking CXX executable ../../hyriseTest
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>create_test_data_directory(std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&)<<:
/home/Fabian.Wiebe/origin-hyrise/src/test/gtest_main.cpp:17: Warnung: undefinierter Verweis auf >>std::filesystem::create_directory(std::filesystem::__cxx11::path const&)<<
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>remove_test_data_directory()<<:
/home/Fabian.Wiebe/origin-hyrise/src/test/gtest_main.cpp:22: Warnung: undefinierter Verweis auf >>std::filesystem::remove_all(std::filesystem::__cxx11::path const&)<<
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>std::filesystem::exists(std::filesystem::__cxx11::path const&)<<:
/usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../../include/c++/8.0.1/bits/fs_ops.h:121: Warnung: undefinierter Verweis auf >>std::filesystem::status(std::filesystem::__cxx11::path const&)<<
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>path<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::filesystem::__cxx11::path><<:
/usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../../include/c++/8.0.1/bits/fs_path.h:183: Warnung: undefinierter Verweis auf >>std::filesystem::__cxx11::path::_M_split_cmpts()<<
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>path<<:
/usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../../include/c++/8.0.1/bits/fs_path.h:176: Warnung: undefinierter Verweis auf >>std::filesystem::__cxx11::path::_M_split_cmpts()<<
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>path<char [16], std::filesystem::__cxx11::path><<:
/usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../../include/c++/8.0.1/bits/fs_path.h:183: Warnung: undefinierter Verweis auf >>std::filesystem::__cxx11::path::_M_split_cmpts()<<
clang: error: linker command failed with exit code 1 (use -v to see invocation)
src/test/CMakeFiles/hyriseTest.dir/build.make:3896: recipe for target 'hyriseTest' failed
make[3]: *** [hyriseTest] Error 1
CMakeFiles/Makefile2:1492: recipe for target 'src/test/CMakeFiles/hyriseTest.dir/all' failed
make[2]: *** [src/test/CMakeFiles/hyriseTest.dir/all] Error 2
CMakeFiles/Makefile2:1504: recipe for target 'src/test/CMakeFiles/hyriseTest.dir/rule' failed
make[1]: *** [src/test/CMakeFiles/hyriseTest.dir/rule] Error 2
Makefile:541: recipe for target 'hyriseTest' failed
make: *** [hyriseTest] Error 2

Linker error with invocation:

[100%] Linking CXX executable ../../hyriseTest
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.3.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8.0.1
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1
Candidate multilib: .;@m64
Selected multilib: .;@m64
 "/usr/bin/ld" -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o ../../hyriseTest /usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../x86_64-linux-gnu/crt1.o /usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/crtbegin.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../.. -L/usr/lib/llvm-6.0/bin/../lib -L/lib -L/usr/lib --export-dynamic CMakeFiles/hyriseTest.dir/testing_assert.cpp.o CMakeFiles/hyriseTest.dir/sql/sqlite_testrunner/sqlite_wrapper.cpp.o CMakeFiles/hyriseTest.dir/concurrency/commit_context_test.cpp.o CMakeFiles/hyriseTest.dir/concurrency/transaction_context_test.cpp.o CMakeFiles/hyriseTest.dir/gtest_main.cpp.o CMakeFiles/hyriseTest.dir/import_export/csv_meta_test.cpp.o CMakeFiles/hyriseTest.dir/cost_model/cost_feature_proxy_test.cpp.o CMakeFiles/hyriseTest.dir/lib/all_parameter_variant_test.cpp.o CMakeFiles/hyriseTest.dir/lib/all_type_variant_test.cpp.o CMakeFiles/hyriseTest.dir/lib/fixed_string_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/aggregate_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/create_view_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/drop_view_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/lqp_find_first_subplan_mismatch_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/delete_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/dummy_table_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/insert_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/join_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/limit_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/logical_query_plan_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/mock_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/predicate_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/projection_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/show_columns_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/show_tables_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/sort_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/stored_table_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/union_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/update_node_test.cpp.o CMakeFiles/hyriseTest.dir/logical_query_plan/validate_node_test.cpp.o CMakeFiles/hyriseTest.dir/operators/aggregate_test.cpp.o CMakeFiles/hyriseTest.dir/operators/delete_test.cpp.o CMakeFiles/hyriseTest.dir/operators/difference_test.cpp.o CMakeFiles/hyriseTest.dir/operators/export_binary_test.cpp.o CMakeFiles/hyriseTest.dir/operators/export_csv_test.cpp.o CMakeFiles/hyriseTest.dir/operators/get_table_test.cpp.o CMakeFiles/hyriseTest.dir/operators/import_binary_test.cpp.o CMakeFiles/hyriseTest.dir/operators/import_csv_test.cpp.o CMakeFiles/hyriseTest.dir/operators/index_scan_test.cpp.o CMakeFiles/hyriseTest.dir/operators/insert_test.cpp.o CMakeFiles/hyriseTest.dir/operators/join_equi_test.cpp.o CMakeFiles/hyriseTest.dir/operators/join_full_test.cpp.o CMakeFiles/hyriseTest.dir/operators/join_hash_test.cpp.o CMakeFiles/hyriseTest.dir/operators/join_index_test.cpp.o CMakeFiles/hyriseTest.dir/operators/join_null_test.cpp.o CMakeFiles/hyriseTest.dir/operators/join_semi_anti_test.cpp.o CMakeFiles/hyriseTest.dir/operators/limit_test.cpp.o CMakeFiles/hyriseTest.dir/operators/physical_query_plan_test.cpp.o CMakeFiles/hyriseTest.dir/operators/maintenance/create_view_test.cpp.o CMakeFiles/hyriseTest.dir/operators/maintenance/drop_view_test.cpp.o CMakeFiles/hyriseTest.dir/operators/maintenance/show_columns_test.cpp.o CMakeFiles/hyriseTest.dir/operators/maintenance/show_tables_test.cpp.o CMakeFiles/hyriseTest.dir/operators/print_test.cpp.o CMakeFiles/hyriseTest.dir/operators/product_test.cpp.o CMakeFiles/hyriseTest.dir/operators/projection_test.cpp.o CMakeFiles/hyriseTest.dir/operators/recreation_test.cpp.o CMakeFiles/hyriseTest.dir/operators/sort_test.cpp.o CMakeFiles/hyriseTest.dir/operators/table_scan_like_test.cpp.o CMakeFiles/hyriseTest.dir/operators/table_scan_test.cpp.o CMakeFiles/hyriseTest.dir/operators/union_all_test.cpp.o CMakeFiles/hyriseTest.dir/operators/union_positions_test.cpp.o CMakeFiles/hyriseTest.dir/operators/update_test.cpp.o CMakeFiles/hyriseTest.dir/operators/validate_test.cpp.o CMakeFiles/hyriseTest.dir/operators/validate_visibility_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/expression_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/join_ordering/join_graph_builder_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/join_ordering/join_graph_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/join_ordering/join_plan_predicate_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/lqp_translator_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/optimizer_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/strategy/chunk_pruning_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/strategy/constant_calculation_rule_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/strategy/index_scan_rule_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/strategy/join_detection_rule_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/strategy/predicate_reordering_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/strategy/predicate_pushdown_rule_test.cpp.o CMakeFiles/hyriseTest.dir/optimizer/strategy/strategy_base_test.cpp.o CMakeFiles/hyriseTest.dir/statistics/table_statistics_join_test.cpp.o CMakeFiles/hyriseTest.dir/statistics/table_statistics_test.cpp.o CMakeFiles/hyriseTest.dir/statistics/chunk_statistics/pruning_filters_test.cpp.o CMakeFiles/hyriseTest.dir/statistics/column_statistics_test.cpp.o CMakeFiles/hyriseTest.dir/statistics/generate_table_statistics_test.cpp.o CMakeFiles/hyriseTest.dir/statistics/statistics_import_export_test.cpp.o CMakeFiles/hyriseTest.dir/scheduler/scheduler_test.cpp.o CMakeFiles/hyriseTest.dir/server/postgres_wire_handler_test.cpp.o CMakeFiles/hyriseTest.dir/server/server_session_test.cpp.o CMakeFiles/hyriseTest.dir/sql/sql_basic_cache_test.cpp.o CMakeFiles/hyriseTest.dir/sql/hsql_expression_translator_test.cpp.o CMakeFiles/hyriseTest.dir/sql/sqlite_testrunner/sqlite_testrunner.cpp.o CMakeFiles/hyriseTest.dir/sql/sql_pipeline_statement_test.cpp.o CMakeFiles/hyriseTest.dir/sql/sql_pipeline_test.cpp.o CMakeFiles/hyriseTest.dir/sql/sql_query_plan_cache_test.cpp.o CMakeFiles/hyriseTest.dir/sql/sql_query_plan_test.cpp.o CMakeFiles/hyriseTest.dir/sql/sql_translator_test.cpp.o CMakeFiles/hyriseTest.dir/storage/adaptive_radix_tree_index_test.cpp.o CMakeFiles/hyriseTest.dir/storage/any_column_iterable_test.cpp.o CMakeFiles/hyriseTest.dir/storage/chunk_encoder_test.cpp.o CMakeFiles/hyriseTest.dir/storage/chunk_test.cpp.o CMakeFiles/hyriseTest.dir/storage/composite_group_key_index_test.cpp.o CMakeFiles/hyriseTest.dir/storage/dictionary_column_test.cpp.o CMakeFiles/hyriseTest.dir/storage/fixed_string_dictionary_column_test.cpp.o CMakeFiles/hyriseTest.dir/storage/encoded_column_test.cpp.o CMakeFiles/hyriseTest.dir/storage/group_key_index_test.cpp.o CMakeFiles/hyriseTest.dir/storage/btree_index_test.cpp.o CMakeFiles/hyriseTest.dir/storage/iterables_test.cpp.o CMakeFiles/hyriseTest.dir/storage/materialize_test.cpp.o CMakeFiles/hyriseTest.dir/storage/multi_column_index_test.cpp.o CMakeFiles/hyriseTest.dir/storage/compressed_vector_test.cpp.o CMakeFiles/hyriseTest.dir/storage/numa_placement_test.cpp.o CMakeFiles/hyriseTest.dir/storage/reference_column_test.cpp.o CMakeFiles/hyriseTest.dir/storage/simd_bp128_test.cpp.o CMakeFiles/hyriseTest.dir/storage/single_column_index_test.cpp.o CMakeFiles/hyriseTest.dir/storage/storage_manager_test.cpp.o CMakeFiles/hyriseTest.dir/storage/table_test.cpp.o CMakeFiles/hyriseTest.dir/storage/value_column_test.cpp.o CMakeFiles/hyriseTest.dir/storage/variable_length_key_base_test.cpp.o CMakeFiles/hyriseTest.dir/storage/variable_length_key_store_test.cpp.o CMakeFiles/hyriseTest.dir/storage/variable_length_key_test.cpp.o CMakeFiles/hyriseTest.dir/storage/fixed_string_vector_test.cpp.o CMakeFiles/hyriseTest.dir/tasks/chunk_compression_task_test.cpp.o CMakeFiles/hyriseTest.dir/tasks/operator_task_test.cpp.o CMakeFiles/hyriseTest.dir/utils/cuckoo_hashtable_test.cpp.o CMakeFiles/hyriseTest.dir/utils/format_bytes_test.cpp.o CMakeFiles/hyriseTest.dir/utils/format_duration_test.cpp.o CMakeFiles/hyriseTest.dir/utils/numa_memory_resource_test.cpp.o CMakeFiles/hyriseTest.dir/embed_llvm/jit_code_specializer_test_module.s.o CMakeFiles/hyriseTest.dir/embed_llvm/jit_compiler_test_module.s.o CMakeFiles/hyriseTest.dir/embed_llvm/jit_repository_test_module.s.o CMakeFiles/hyriseTest.dir/embed_llvm/resolve_condition_test_module.s.o CMakeFiles/hyriseTest.dir/operators/jit_operator_wrapper_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/jit_aware_lqp_translator_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/jit_hashmap_value_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/jit_operations_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/jit_tuple_value_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/jit_variant_vector_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/operators/jit_aggregate_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/operators/jit_compute_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/operators/jit_expression_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/operators/jit_filter_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/operators/jit_read_write_tuple_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/specialization/get_runtime_pointer_for_value_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/specialization/jit_code_specializer_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/specialization/jit_compiler_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/specialization/jit_repository_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/specialization/jit_runtime_pointer_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/specialization/resolve_condition_test.cpp.o CMakeFiles/hyriseTest.dir/operators/jit_operator/specialization/modules/jit_code_specializer_test_module.cpp.o ../lib/libhyrise.a ../../third_party/googletest/googlemock/gtest/libgtest.a ../../third_party/googletest/googlemock/libgmock.a -lsqlite3 /usr/lib/gcc/x86_64-linux-gnu/7/libstdc++fs.a /usr/lib/x86_64-linux-gnu/libboost_system.so /usr/lib/x86_64-linux-gnu/libboost_thread.so ../../third_party/libsqlparser.a /usr/lib/x86_64-linux-gnu/libtbb.so /usr/lib/llvm-6.0/lib/libLLVM.so /usr/lib/x86_64-linux-gnu/libnuma.so ../../third_party/pgasus/src/msource/libhpinuma_msource_s_d.a -lpthread ../../third_party/pgasus/src/base/libhpinuma_base_s_d.a /usr/lib/x86_64-linux-gnu/libhwloc.so /usr/lib/x86_64-linux-gnu/libnuma.so -lpthread -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/crtend.o /usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../x86_64-linux-gnu/crtn.o
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>create_test_data_directory(std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&)<<:
/home/Fabian.Wiebe/origin-hyrise/src/test/gtest_main.cpp:17: Warnung: undefinierter Verweis auf >>std::filesystem::create_directory(std::filesystem::__cxx11::path const&)<<
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>remove_test_data_directory()<<:
/home/Fabian.Wiebe/origin-hyrise/src/test/gtest_main.cpp:22: Warnung: undefinierter Verweis auf >>std::filesystem::remove_all(std::filesystem::__cxx11::path const&)<<
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>std::filesystem::exists(std::filesystem::__cxx11::path const&)<<:
/usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../../include/c++/8.0.1/bits/fs_ops.h:121: Warnung: undefinierter Verweis auf >>std::filesystem::status(std::filesystem::__cxx11::path const&)<<
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>path<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::filesystem::__cxx11::path><<:
/usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../../include/c++/8.0.1/bits/fs_path.h:183: Warnung: undefinierter Verweis auf >>std::filesystem::__cxx11::path::_M_split_cmpts()<<
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>path<<:
/usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../../include/c++/8.0.1/bits/fs_path.h:176: Warnung: undefinierter Verweis auf >>std::filesystem::__cxx11::path::_M_split_cmpts()<<
CMakeFiles/hyriseTest.dir/gtest_main.cpp.o: In Funktion >>path<char [16], std::filesystem::__cxx11::path><<:
/usr/bin/../lib/gcc/x86_64-linux-gnu/8.0.1/../../../../include/c++/8.0.1/bits/fs_path.h:183: Warnung: undefinierter Verweis auf >>std::filesystem::__cxx11::path::_M_split_cmpts()<<
clang: error: linker command failed with exit code 1 (use -v to see invocation)
src/test/CMakeFiles/hyriseTest.dir/build.make:3896: recipe for target 'hyriseTest' failed
make[3]: *** [hyriseTest] Error 1
CMakeFiles/Makefile2:1492: recipe for target 'src/test/CMakeFiles/hyriseTest.dir/all' failed
make[2]: *** [src/test/CMakeFiles/hyriseTest.dir/all] Error 2
CMakeFiles/Makefile2:1504: recipe for target 'src/test/CMakeFiles/hyriseTest.dir/rule' failed
make[1]: *** [src/test/CMakeFiles/hyriseTest.dir/rule] Error 2
Makefile:541: recipe for target 'hyriseTest' failed
make: *** [hyriseTest] Error 2

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Comments: 18 (10 by maintainers)

Most upvoted comments

I always delete all files from the cmake folder before rerunning cmake. The file is gone. 😕