Как правильно собрать protobuf на astra 1.7

Возникла проблема при использовании protobuf в программе на языке с++.

  1. Установил на астру с помощью apt install protobuf-compiler libprotobuf-dev, начал собирать, cmake все нашел, но выдал:
: && /usr/bin/clang++     CMakeFiles/testApp.dir/src/c++/main.cc.o CMakeFiles/testApp.dir/test.grpc.pb.cc.o CMakeFiles/testApp.dir/test.pb.cc.o  -o testApp  /usr/local/lib/libprotobuf.a  -lpthread && :
/usr/bin/ld: /usr/local/lib/libprotobuf.a(arena.cc.o): relocation R_X86_64_32 against symbol `_ZN6google8protobuf8internal9ArenaFreeEPvm' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: /usr/local/lib/libprotobuf.a(arenastring.cc.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a PIE object; recompile with -fPIC

Почитал и понял, что нужно самому собрать protobuf с флагом -fPIC;

  1. Полез на гитхаб protobuf и следую иснтрукции собрал protobuf. Запускаю сборку проекта, и пролучаю это:
CMake Warning at /usr/share/cmake-3.16/Modules/FindProtobuf.cmake:499 (message):
  Protobuf compiler version 25.3 doesn't match library version 3.14.0

../../include/protoex/protobufs/protoex.pb.h:15:2: error: "This file was generated by a newer version of protoc which is"
#error "This file was generated by a newer version of protoc which is"
 ^
../../include/protoex/protobufs/protoex.pb.h:16:2: error: "incompatible with your Protocol Buffer headers. Please update"
#error "incompatible with your Protocol Buffer headers. Please update"

Опять почитал и понял, что конфликтуют версии protobuf.

  1. Поднял чистую версию астры, все базовые интсрументы установил, убедился, что нет porotoc, полез опять собирать, собрал, запускаю ссборку, теперь cmake не знает где найти protobuf
CMake Error at CMakeLists.txt:22 (find_package):
  Could not find a package configuration file provided by "Protobuf" with any
  of the following names:
    ProtobufConfig.cmake
    protobuf-config.cmake
  Add the installation prefix of "Protobuf" to CMAKE_PREFIX_PATH or set
  "Protobuf_DIR" to a directory containing one of the above files.  If
  "Protobuf" provides a separate development package or SDK, be sure it has
  been installed.
-- Configuring incomplete, errors occurred!
  1. Указал опции cmake
-D Protobuf_PROTOC_EXECUTABLE=/usr/local/bin/protoc

-D Protobuf_INCLUDE_DIR=/usr/local/include/protoc

-D Protobuf_LIB_VERSION=/usr/local/protoc

Все равно не нашел.

Итог: много что поробовал, но в итоге не успешно, мб кто подскажет в каком порядке и как правильно все собрать?


Ответы (0 шт):