Невозможно собрать protobuf 2.4.1 в Ubuntu

#c #ubuntu #protocol-buffers #proto

#c #ubuntu #протокол-буферы #прото

Вопрос:

Когда я пытался запустить make команду для сборки protobuf в Ubuntu 20, я столкнулся с этой ошибкой

 google/protobuf/compiler/command_line_interface.cc:913:55: error: cannot bind rvalue reference of type ‘std::__cxx11::basic_string<char>amp;amp;’ to lvalue of type ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’}
  913 |       proto_path_.push_back(make_pair<string, string>(virtual_path, disk_path));
      |                                                       ^~~~~~~~~~~~
In file included from /usr/include/c  /9/bits/stl_algobase.h:64,
                 from /usr/include/c  /9/bits/char_traits.h:39,
                 from /usr/include/c  /9/string:40,
                 from ./google/protobuf/stubs/common.h:41,
                 from ./google/protobuf/compiler/command_line_interface.h:41,
                 from google/protobuf/compiler/command_line_interface.cc:35:
  

Кто-нибудь знает, как это исправить?

Комментарии:

1. Что вы в итоге сделали?

2. @RafaelChaves Для его сборки я использовал док-образ

Ответ №1:

На ум приходят три вещи:

  1. Возможно, вам потребуется указать заданную версию C , например -std=c 11

  2. Похоже, вы также можете установить несколько версий gcc в Ubuntu 20: https://linuxize.com/post/how-to-install-gcc-on-ubuntu-20-04 /

  3. Если все остальное не удается, вы можете создать образ docker для выполнения компиляции, основать образ docker на более старой версии Ubuntu / Debian и / или использовать более старый компилятор. Также смотрите это: https://askubuntu.com/questions/1229774/how-to-use-an-older-version-of-gcc