Как правильно собрать protobuf на astra 1.7
Возникла проблема при использовании protobuf в программе на языке с++.
- Установил на астру с помощью 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;
- Полез на гитхаб 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.
- Поднял чистую версию астры, все базовые интсрументы установил, убедился, что нет 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!
- Указал опции cmake
-D Protobuf_PROTOC_EXECUTABLE=/usr/local/bin/protoc
-D Protobuf_INCLUDE_DIR=/usr/local/include/protoc
-D Protobuf_LIB_VERSION=/usr/local/protoc
Все равно не нашел.
Итог: много что поробовал, но в итоге не успешно, мб кто подскажет в каком порядке и как правильно все собрать?