grpc неопрделенная ссылка на
не работает grpc устанавливал один в один по гайду с quick start grpc C++ Примеры с гайда работают. cmake:
#---------------------SET COMPONENT NAME---------------------------------------#
set(PROJECT cpp_server)
#------------------------------------------------------------------------------#
#---------------------SET LOCAL NAME TO LINK COMPONENT-------------------------#
#------------------------------------------------------------------------------#
#-----------------------INCLUDE HEADER-----------------------------------------#
list(APPEND CMAKE_PREFIX_PATH "/opt/grpc" "/opt/protobuf")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
message("SADSOFKAPGOKPWAKG -> " ${PROJECT_SOURCE_DIR}/app/cmake)
#------------------------------------------------------------------------------#
#---------------------SET PROTO FILE-------------------------------------------#
set(PROTOS
${PROJECT_SOURCE_DIR}/protos/message_kernel.proto
)
set(PROTO_SRC_DIR ${CMAKE_CURRENT_BINARY_DIR}/proto-src)
file(MAKE_DIRECTORY ${PROTO_SRC_DIR})
#------------------------------------------------------------------------------#
#---------------------FIND PACKAGES--------------------------------------------#
find_package(Protobuf REQUIRED)
find_package(GRPC REQUIRED)
find_package(Threads REQUIRED)
#find_package(Boost REQUIRED)
#------------------------------------------------------------------------------#
#-----------------------INCLUDE HEADER-----------------------------------------#
include_directories(${PROTO_SRC_DIR})
#------------------------------------------------------------------------------#
#---------------------GENERATE AUTOCODE----------------------------------------#
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_SRC_DIR} ${PROTOS})
grpc_generate_cpp(GRPC_SRCS GRPC_HDRS ${PROTO_SRC_DIR} ${PROTOS})
#---------------------ADD SOURCE-----------------------------------------------#
set(SERVER client_service)
set(SERVER_SOURCE main.cpp ../libraries/logger/logger.h)
#---------------------ADD DEFINITION-------------------------------------------#
add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
#------------------------------------------------------------------------------#
#--------------------INCLUDE DIRS----------------------------------------------#
if(Boost_FOUND)
include_directories(${BOOST_INCLUDE_DIRS})
link_directories(${BOOST_LIBRARIES})
endif()
#------------------------------------------------------------------------------#
#---------------------ADD EXECUTE----------------------------------------------#
add_executable(${SERVER}
${SERVER_SOURCE}
${PROTO_SRCS}
${GRPC_SRCS}
)
#---------------------LINK COMPONENTS------------------------------------------#
#------------------------------------------------------------------------------#
target_link_libraries(${SERVER}
gRPC::grpc++_reflection
protobuf::libprotobuf
)
target_link_libraries(${SERVER} ${BOOST_INCLUDE_DIRS})
target_link_libraries(${SERVER} ${BOOST_LIBRARIES} Threads::Threads)
target_link_libraries(${SERVER} ${CMAKE_THREAD_LIBS_INIT} )
#------------------------------------------------------------------------------#
target_compile_features(${SERVER} PRIVATE cxx_std_17)
#------------------------------------------------------------------------------#
часть ошибок:
[ 16%] Linking CXX executable client_service
/usr/bin/ld: /usr/lib/libgrpc++.a(insecure_server_credentials.cc.o): в функции «grpc::(anonymous namespace)::InsecureServerCredentialsImpl::SetAuthMetadataProcessor(std::shared_ptr<grpc::AuthMetadataProcessor> const&)»:
insecure_server_credentials.cc:(.text+0x71): неопределённая ссылка на «gpr_log»
/usr/bin/ld: /usr/lib/libgrpc++.a(server_builder.cc.o): в функции «grpc::ServerBuilder::ServerBuilder()»:
server_builder.cc:(.text+0x2a5): неопределённая ссылка на «gpr_once_init»
/usr/bin/ld: /usr/lib/libgrpc++.a(server_builder.cc.o): в функции «grpc::ServerBuilder::RegisterAsyncGenericService(grpc::AsyncGenericService*)»:
server_builder.cc:(.text+0x7b7): неопределённая ссылка на «gpr_log»
/usr/bin/ld: /usr/lib/libgrpc++.a(server_builder.cc.o): в функции «grpc::ServerBuilder::experimental_type::RegisterCallbackGenericService(grpc::experimental::CallbackGenericService*)»:
server_builder.cc:(.text+0x831): неопределённая ссылка на «gpr_log»
/usr/bin/ld: /usr/lib/libgrpc++.a(server_builder.cc.o): в функции «grpc::ServerBuilder::experimental_type::AddExternalConnectionAcceptor(grpc::ServerBuilder::experimental_type::ExternalConnectionType, std::shared_ptr<grpc::ServerCredentials>)»:
server_builder.cc:(.text+0x913): неопределённая ссылка на «gpr_ltoa(long, char*)»
/usr/bin/ld: /usr/lib/libgrpc++.a(server_builder.cc.o): в функции «grpc::ServerBuilder::BuildAndStart()»:
server_builder.cc:(.text+0x17f4): неопределённая ссылка на «gpr_log»
/usr/bin/ld: server_builder.cc:(.text+0x1823): неопределённая ссылка на «gpr_log»
/usr/bin/ld: server_builder.cc:(.text+0x1bc9): неопределённая ссылка на «gpr_log»
/usr/bin/ld: server_builder.cc:(.text+0x1f22): неопределённая ссылка на «gpr_log»
/usr/bin/ld: /usr/lib/libgrpc++.a(server_builder.cc.o): в функции «grpc::ServerBuilder::InternalAddPluginFactory(std::unique_ptr<grpc::ServerBuilderPlugin, std::default_delete<grpc::ServerBuilderPlugin> > (*)())»:
server_builder.cc:(.text+0x2307): неопределённая ссылка на «gpr_once_init»
/usr/bin/ld: /usr/lib/libgrpc++.a(server_builder.cc.o): в функции «grpc::ServerBuilder::EnableWorkaround(grpc_workaround_list)»:
server_builder.cc:(.text+0x23d0): неопределённая ссылка на «gpr_log»
