nsg-ethz / p4-utils

Extension to Mininet that makes P4 networks easier to build
GNU General Public License v2.0
175 stars 65 forks source link

Install error libpiprotobuf.so: undefined references #73

Open alessandrocornacchia opened 2 months ago

alessandrocornacchia commented 2 months ago

Hi,

I'm following the manual installation guide to install on Ubuntu 20.04. I execute bash install-p4-dev.sh , but the compilation stops (I think) during do_PI with the following log.

make[4]: Entering directory '/home/alessandro/p4-tools/PI/proto/p4info'
/bin/bash ../libtool  --tag=CXX   --mode=link g++ -pthread -Wall -Wextra -O0 -g   -o pi_convert_p4info convert_p4info.o ./libpiconvertproto.la ../libpiprotobuf.la ../../src/libpip4info.la -L/usr/local/lib -lprotobuf -pthread 
libtool: link: g++ -pthread -Wall -Wextra -O0 -g -o .libs/pi_convert_p4info convert_p4info.o -pthread  ./.libs/libpiconvertproto.so ../.libs/libpiprotobuf.so ../../src/.libs/libpip4info.so -L/usr/local/lib /usr/local/lib/libprotobuf.so -pthread
/usr/bin/ld: convert_p4info.o: in function `main':
/home/alessandro/p4-tools/PI/proto/p4info/convert_p4info.cpp:136: undefined reference to `google::protobuf::MessageLite::ParseFromIstream(std::istream*)'
/usr/bin/ld: /home/alessandro/p4-tools/PI/proto/p4info/convert_p4info.cpp:180: undefined reference to `google::protobuf::MessageLite::SerializeToOstream(std::ostream*) const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ThreadSafeArena::~ThreadSafeArena()'
/usr/bin/ld: ./.libs/libpiconvertproto.so: undefined reference to `google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::end() const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::GenericSwap(google::protobuf::Message*, google::protobuf::Message*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<unsigned int>::InternalSwap(google::protobuf::RepeatedField<unsigned int>*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<int>::data() const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::AssignDescriptors(google::protobuf::internal::DescriptorTable const*, bool)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ParseContext::ReadSizeAndPushLimitAndDepth(char const*, int*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::io::CodedOutputStream::WriteVarint32ToArrayOutOfLineHelper(unsigned int, unsigned char*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::Message::CopyWithSizeCheck(google::protobuf::Message*, google::protobuf::Message const&)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ParseContext::ParseMessage(google::protobuf::MessageLite*, char const*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `descriptor_table_google_2fprotobuf_2fdescriptor_2eproto'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ReadSizeFallback(char const*, unsigned int)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::Any* google::protobuf::Arena::CreateMaybeMessage<google::protobuf::Any>(google::protobuf::Arena*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ThreadSafeArena::AddCleanup(void*, void (*)(void*))'
/usr/bin/ld: ./.libs/libpiconvertproto.so: undefined reference to `google::protobuf::internal::RepeatedPtrFieldBase::AddOutOfLineHelper(void*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::Message::MaybeComputeUnknownFieldsSize(unsigned long, google::protobuf::internal::CachedSize*) const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ArenaStringPtr::ClearToEmpty()'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::UnknownFieldParse(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, char const*, google::protobuf::internal::ParseContext*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ArenaStringPtr::DestroyNoArenaSlowPath()'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::Arena::AllocateAlignedWithHook(unsigned long, std::type_info const*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::AssignDescriptors(google::protobuf::internal::DescriptorTable const* (*)(), std::once_flag*, google::protobuf::Metadata const&)'
/usr/bin/ld: ./.libs/libpiconvertproto.so: undefined reference to `google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Add()'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(google::protobuf::UnknownFieldSet const&, unsigned char*, google::protobuf::io::EpsCopyOutputStream*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::RepeatedPtrFieldBase::DestroyProtos()'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::UnknownFieldParse(unsigned long, google::protobuf::UnknownFieldSet*, char const*, google::protobuf::internal::ParseContext*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<unsigned int>::RepeatedField(google::protobuf::RepeatedField<unsigned int> const&)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `typeinfo for google::protobuf::internal::ZeroFieldsBase'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::RepeatedPtrField(google::protobuf::Arena*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::PackedEnumParser(void*, char const*, google::protobuf::internal::ParseContext*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `vtable for google::protobuf::internal::ZeroFieldsBase'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ZeroFieldsBase::_InternalSerialize(unsigned char*, google::protobuf::io::EpsCopyOutputStream*) const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ThreadSafeArena::SpaceAllocated() const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ZeroFieldsBase::CopyImpl(google::protobuf::Message*, google::protobuf::Message const&)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ArenaStringPtr::Mutable[abi:cxx11](google::protobuf::internal::ArenaStringPtr::EmptyDefault, google::protobuf::Arena*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::kGlobalEmptyTable'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<unsigned int>::~RepeatedField()'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::MapFieldBase::Swap(google::protobuf::internal::MapFieldBase*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<unsigned int>::Clear()'
/usr/bin/ld: ./.libs/libpiconvertproto.so: undefined reference to `google::protobuf::RepeatedField<unsigned int>::begin() const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ZeroFieldsBase::Clear()'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<unsigned int>::data() const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~RepeatedPtrField()'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ReadTagFallback(char const*, unsigned int)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::GetOwnedMessageInternal(google::protobuf::Arena*, google::protobuf::MessageLite*, google::protobuf::Arena*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::RepeatedPtrField(google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Clear()'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::io::EpsCopyOutputStream::WriteStringOutline(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned char*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<int>::RepeatedField(google::protobuf::RepeatedField<int> const&)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::Any::_InternalSerialize(unsigned char*, google::protobuf::io::EpsCopyOutputStream*) const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::VerifyUTF8(google::protobuf::stringpiece_internal::StringPiece, char const*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ArenaStringPtr::Destroy(google::protobuf::internal::ArenaStringPtr::EmptyDefault, google::protobuf::Arena*)'
/usr/bin/ld: ./.libs/libpiconvertproto.so: undefined reference to `google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::begin() const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::MapFieldBase::UnsafeShallowSwap(google::protobuf::internal::MapFieldBase*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::MapFieldBase::InternalSwap(google::protobuf::internal::MapFieldBase*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<int>::Clear()'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<unsigned int>::size() const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::EpsCopyInputStream::ReadStringFallback(char const*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::stringpiece_internal::StringPiece::LogFatalSizeTooBig(unsigned long, char const*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ArenaStringPtr::Set(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, google::protobuf::Arena*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ZeroFieldsBase::~ZeroFieldsBase()'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::InternalSwap(google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<int>::size() const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::io::EpsCopyOutputStream::WriteStringMaybeAliasedOutline(unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned char*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::size() const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<unsigned int>::MergeFrom(google::protobuf::RepeatedField<unsigned int> const&)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::PackedUInt32Parser(void*, char const*, google::protobuf::internal::ParseContext*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::Message::SpaceUsedLong() const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::AddDescriptorsRunner::AddDescriptorsRunner(google::protobuf::internal::DescriptorTable const*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ZeroFieldsBase::_InternalParse(char const*, google::protobuf::internal::ParseContext*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::VarintParseSlow32(char const*, unsigned int)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::io::EpsCopyOutputStream::EnsureSpaceFallback(unsigned char*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<int>::Get(int) const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::MergeFrom(google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<int>::Add(int const&)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<unsigned int>::RepeatedField(google::protobuf::Arena*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ZeroFieldsBase::ByteSizeLong() const'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::EpsCopyInputStream::DoneFallback(int, int)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::ZeroFieldsBase::MergeImpl(google::protobuf::Message*, google::protobuf::Message const&)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<int>::MergeFrom(google::protobuf::RepeatedField<int> const&)'
/usr/bin/ld: ./.libs/libpiconvertproto.so: undefined reference to `google::protobuf::internal::ArenaStringPtr::Set(google::protobuf::internal::ArenaStringPtr::EmptyDefault, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, google::protobuf::Arena*)'
/usr/bin/ld: ./.libs/libpiconvertproto.so: undefined reference to `google::protobuf::RepeatedField<unsigned int>::end() const'
/usr/bin/ld: ./.libs/libpiconvertproto.so: undefined reference to `google::protobuf::RepeatedField<unsigned int>::Add(unsigned int const&)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::Arena::AllocateAlignedWithCleanup(unsigned long, std::type_info const*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<int>::RepeatedField(google::protobuf::Arena*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::InlineGreedyStringParser(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, char const*, google::protobuf::internal::ParseContext*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedField<int>::InternalSwap(google::protobuf::RepeatedField<int>*)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `descriptor_table_google_2fprotobuf_2fany_2eproto'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::StringSpaceUsedExcludingSelfLong(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::internal::VarintParseSlow64(char const*, unsigned int)'
/usr/bin/ld: ../.libs/libpiprotobuf.so: undefined reference to `google::protobuf::RepeatedPtrField<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Get(int) const'
collect2: error: ld returned 1 exit status
make[4]: *** [Makefile:527: pi_convert_p4info] Error 1
make[4]: Leaving directory '/home/alessandro/p4-tools/PI/proto/p4info'
make[3]: *** [Makefile:1695: all-recursive] Error 1
make[3]: Leaving directory '/home/alessandro/p4-tools/PI/proto'
make[2]: *** [Makefile:735: all] Error 2
make[2]: Leaving directory '/home/alessandro/p4-tools/PI/proto'
make[1]: *** [Makefile:452: all-recursive] Error 1
make[1]: Leaving directory '/home/alessandro/p4-tools/PI'
make: *** [Makefile:384: all] Error 2

By checking the source code of the protobuf repository cloned during the previous installation steps, I can find those symbols are defined. Also seems they are compiled...I cannot figure out why they are not found when linking...

Any idea how to solve this?