Problem with absl
Closed this issue · 2 comments
PawBlo commented
I have problem to compile & run alpha_zero_torch_example.cc. I build open_spiel from source. When I try to build
clang++ -I${HOME}/open_spiel -I${HOME}/open_spiel/open_spiel/abseil-cpp -std=c++17 -o az alpha_zero_torch_example.cc -L${HOME}/open_spiel/build -lopen_spiel
alpha_zero_torch_example.cc i get this error:
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `main':
alpha_zero_torch_example.cc:(.text+0xb5): undefined reference to `absl::lts_20230125::ParseCommandLine(int, char**)'
/usr/bin/ld: alpha_zero_torch_example.cc:(.text+0x95d): undefined reference to `open_spiel::algorithms::torch_az::AlphaZero(open_spiel::algorithms::torch_az::AlphaZeroConfig, open_spiel::StopToken*, bool)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `absl::lts_20230125::flags_internal::FlagRegistrar<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, true>::FlagRegistrar(absl::lts_20230125::flags_internal::Flag<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, char const*)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012514flags_internal13FlagRegistrarINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb1EEC2ERNS1_4FlagIS8_EEPKc[_ZN4absl12lts_2023012514flags_internal13FlagRegistrarINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELb1EEC2ERNS1_4FlagIS8_EEPKc]+0x27): undefined reference to `absl::lts_20230125::flags_internal::RegisterCommandLineFlag(absl::lts_20230125::CommandLineFlag&, char const*)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `absl::lts_20230125::flags_internal::FlagRegistrar<int, true>::FlagRegistrar(absl::lts_20230125::flags_internal::Flag<int>&, char const*)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012514flags_internal13FlagRegistrarIiLb1EEC2ERNS1_4FlagIiEEPKc[_ZN4absl12lts_2023012514flags_internal13FlagRegistrarIiLb1EEC2ERNS1_4FlagIiEEPKc]+0x27): undefined reference to `absl::lts_20230125::flags_internal::RegisterCommandLineFlag(absl::lts_20230125::CommandLineFlag&, char const*)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `absl::lts_20230125::flags_internal::FlagRegistrar<double, true>::FlagRegistrar(absl::lts_20230125::flags_internal::Flag<double>&, char const*)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012514flags_internal13FlagRegistrarIdLb1EEC2ERNS1_4FlagIdEEPKc[_ZN4absl12lts_2023012514flags_internal13FlagRegistrarIdLb1EEC2ERNS1_4FlagIdEEPKc]+0x27): undefined reference to `absl::lts_20230125::flags_internal::RegisterCommandLineFlag(absl::lts_20230125::CommandLineFlag&, char const*)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `absl::lts_20230125::flags_internal::FlagRegistrar<bool, true>::FlagRegistrar(absl::lts_20230125::flags_internal::Flag<bool>&, char const*)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012514flags_internal13FlagRegistrarIbLb1EEC2ERNS1_4FlagIbEEPKc[_ZN4absl12lts_2023012514flags_internal13FlagRegistrarIbLb1EEC2ERNS1_4FlagIbEEPKc]+0x27): undefined reference to `absl::lts_20230125::flags_internal::RegisterCommandLineFlag(absl::lts_20230125::CommandLineFlag&, char const*)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `bool absl::lts_20230125::flags_internal::InvokeParseFlag<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012514flags_internal15InvokeParseFlagINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbSt17basic_string_viewIcS6_EPT_PS8_[_ZN4absl12lts_2023012514flags_internal15InvokeParseFlagINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEbSt17basic_string_viewIcS6_EPT_PS8_]+0x39): undefined reference to `absl::lts_20230125::flags_internal::AbslParseFlag(std::basic_string_view<char, std::char_traits<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > absl::lts_20230125::flags_internal::Unparse<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012514flags_internal7UnparseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES8_RKT_[_ZN4absl12lts_2023012514flags_internal7UnparseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES8_RKT_]+0x39): undefined reference to `absl::lts_20230125::flags_internal::AbslUnparseFlag[abi:cxx11](std::basic_string_view<char, std::char_traits<char> >)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > absl::lts_20230125::UnparseFlag<int>(int const&)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012511UnparseFlagIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_[_ZN4absl12lts_2023012511UnparseFlagIiEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_]+0x21): undefined reference to `absl::lts_20230125::flags_internal::Unparse[abi:cxx11](int)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `bool absl::lts_20230125::flags_internal::InvokeParseFlag<int>(std::basic_string_view<char, std::char_traits<char> >, int*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012514flags_internal15InvokeParseFlagIiEEbSt17basic_string_viewIcSt11char_traitsIcEEPT_PNSt7__cxx1112basic_stringIcS5_SaIcEEE[_ZN4absl12lts_2023012514flags_internal15InvokeParseFlagIiEEbSt17basic_string_viewIcSt11char_traitsIcEEPT_PNSt7__cxx1112basic_stringIcS5_SaIcEEE]+0x39): undefined reference to `absl::lts_20230125::flags_internal::AbslParseFlag(std::basic_string_view<char, std::char_traits<char> >, int*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > absl::lts_20230125::UnparseFlag<double>(double const&)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012511UnparseFlagIdEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_[_ZN4absl12lts_2023012511UnparseFlagIdEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_]+0x23): undefined reference to `absl::lts_20230125::flags_internal::Unparse[abi:cxx11](double)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `bool absl::lts_20230125::flags_internal::InvokeParseFlag<double>(std::basic_string_view<char, std::char_traits<char> >, double*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012514flags_internal15InvokeParseFlagIdEEbSt17basic_string_viewIcSt11char_traitsIcEEPT_PNSt7__cxx1112basic_stringIcS5_SaIcEEE[_ZN4absl12lts_2023012514flags_internal15InvokeParseFlagIdEEbSt17basic_string_viewIcSt11char_traitsIcEEPT_PNSt7__cxx1112basic_stringIcS5_SaIcEEE]+0x39): undefined reference to `absl::lts_20230125::flags_internal::AbslParseFlag(std::basic_string_view<char, std::char_traits<char> >, double*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > absl::lts_20230125::UnparseFlag<bool>(bool const&)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012511UnparseFlagIbEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_[_ZN4absl12lts_2023012511UnparseFlagIbEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_]+0x26): undefined reference to `absl::lts_20230125::flags_internal::Unparse[abi:cxx11](bool)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `bool absl::lts_20230125::flags_internal::InvokeParseFlag<bool>(std::basic_string_view<char, std::char_traits<char> >, bool*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)':
alpha_zero_torch_example.cc:(.text._ZN4absl12lts_2023012514flags_internal15InvokeParseFlagIbEEbSt17basic_string_viewIcSt11char_traitsIcEEPT_PNSt7__cxx1112basic_stringIcS5_SaIcEEE[_ZN4absl12lts_2023012514flags_internal15InvokeParseFlagIbEEbSt17basic_string_viewIcSt11char_traitsIcEEPT_PNSt7__cxx1112basic_stringIcS5_SaIcEEE]+0x39): undefined reference to `absl::lts_20230125::flags_internal::AbslParseFlag(std::basic_string_view<char, std::char_traits<char> >, bool*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `absl::lts_20230125::flags_internal::Flag<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Get() const':
alpha_zero_torch_example.cc:(.text._ZNK4absl12lts_2023012514flags_internal4FlagINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3GetEv[_ZNK4absl12lts_2023012514flags_internal4FlagINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3GetEv]+0x40): undefined reference to `absl::lts_20230125::flags_internal::FlagImpl::AssertValidType(void const*, std::type_info const* (*)()) const'
/usr/bin/ld: alpha_zero_torch_example.cc:(.text._ZNK4absl12lts_2023012514flags_internal4FlagINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3GetEv[_ZNK4absl12lts_2023012514flags_internal4FlagINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3GetEv]+0x84): undefined reference to `absl::lts_20230125::flags_internal::FlagImpl::Read(void*) const'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `absl::lts_20230125::flags_internal::Flag<int>::Get() const':
alpha_zero_torch_example.cc:(.text._ZNK4absl12lts_2023012514flags_internal4FlagIiE3GetEv[_ZNK4absl12lts_2023012514flags_internal4FlagIiE3GetEv]+0x31): undefined reference to `absl::lts_20230125::flags_internal::FlagImpl::AssertValidType(void const*, std::type_info const* (*)()) const'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `void absl::lts_20230125::flags_internal::FlagImpl::Read<int, 0>(int*) const':
alpha_zero_torch_example.cc:(.text._ZNK4absl12lts_2023012514flags_internal8FlagImpl4ReadIiLi0EEEvPT_[_ZNK4absl12lts_2023012514flags_internal8FlagImpl4ReadIiLi0EEEvPT_]+0x15): undefined reference to `absl::lts_20230125::flags_internal::FlagImpl::ReadOneWord() const'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `absl::lts_20230125::flags_internal::Flag<bool>::Get() const':
alpha_zero_torch_example.cc:(.text._ZNK4absl12lts_2023012514flags_internal4FlagIbE3GetEv[_ZNK4absl12lts_2023012514flags_internal4FlagIbE3GetEv]+0x31): undefined reference to `absl::lts_20230125::flags_internal::FlagImpl::AssertValidType(void const*, std::type_info const* (*)()) const'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `absl::lts_20230125::flags_internal::FlagImpl::Read(bool*) const':
alpha_zero_torch_example.cc:(.text._ZNK4absl12lts_2023012514flags_internal8FlagImpl4ReadEPb[_ZNK4absl12lts_2023012514flags_internal8FlagImpl4ReadEPb]+0x15): undefined reference to `absl::lts_20230125::flags_internal::FlagImpl::ReadOneBool() const'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `absl::lts_20230125::flags_internal::Flag<double>::Get() const':
alpha_zero_torch_example.cc:(.text._ZNK4absl12lts_2023012514flags_internal4FlagIdE3GetEv[_ZNK4absl12lts_2023012514flags_internal4FlagIdE3GetEv]+0x31): undefined reference to `absl::lts_20230125::flags_internal::FlagImpl::AssertValidType(void const*, std::type_info const* (*)()) const'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o: in function `void absl::lts_20230125::flags_internal::FlagImpl::Read<double, 0>(double*) const':
alpha_zero_torch_example.cc:(.text._ZNK4absl12lts_2023012514flags_internal8FlagImpl4ReadIdLi0EEEvPT_[_ZNK4absl12lts_2023012514flags_internal8FlagImpl4ReadIdLi0EEEvPT_]+0x15): undefined reference to `absl::lts_20230125::flags_internal::FlagImpl::ReadOneWord() const'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o:(.data+0x0): undefined reference to `vtable for absl::lts_20230125::flags_internal::FlagImpl'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o:(.data+0x70): undefined reference to `vtable for absl::lts_20230125::flags_internal::FlagImpl'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o:(.data+0xe0): undefined reference to `vtable for absl::lts_20230125::flags_internal::FlagImpl'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o:(.data+0x150): undefined reference to `vtable for absl::lts_20230125::flags_internal::FlagImpl'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o:(.data+0x1c0): undefined reference to `vtable for absl::lts_20230125::flags_internal::FlagImpl'
/usr/bin/ld: /tmp/alpha_zero_torch_example-8f9c6c.o:(.data+0x218): more undefined references to `vtable for absl::lts_20230125::flags_internal::FlagImpl' follow
- How to solve this problem?
- Do you have any specific requirements for the library to ensure everything works properly? Like Ubuntu version, cuda version, tensorflow version, clang version, ld version?
My env:
open_spiel - master
Ubuntu 22.04.4 LTS
GNU ld (GNU Binutils for Ubuntu) 2.38
Python 3.10.12
Ubuntu clang version 14.0.0-1ubuntu1.1
lanctot commented
Yes, this is a known problem. There is a solution described in here: #966, but it would be good to finally fix this properly.
lanctot commented
Closing due to inactivity, please re-open if you want to follow-up.