如何在yocto上移植grpc-helloworld(CPP)示例

How to port grpc helloworld(CPP) example on yocto

本文关键字:grpc-helloworld CPP 示例 yocto      更新时间:2023-10-16

嘿,我正试图在Ubuntu 16.04 LTS for target arm上的yocto pyro上移植helloworld,基于cpp的gRPC演示。但我弄错了。

协议-I./--grpc_out=--plugin=protoc gen grpc=/home/admin/BUILD/tmp/sysroots components/x86_64/grpc native/usr/bin/grpc_cpp_plugin.proto

/home/admin/BUILD/tmp/sysroots-components/x86_64/grpc-native/usr/bin/grpc_cpl_plugin:加载共享库时出错:libprotocol.so.15:无法打开共享对象文件:没有这样的文件或目录

--grpc_out:protoc gen grpc:插件失败,状态代码为127。

生成文件:55:目标"hello.grpc.pb.cc"的配方失败

因此,任何人都可以建议解决这个错误的步骤。

请查找helloworld.bb文件。

DESCRIPTION = "Hello world"  
SECTION = "Hello world"  
LICENSE = "CLOSED"  
S = "${COREBASE}/../../../src_dir/hello"  
B = "${S}"  
inherit externalsrc  
EXTERNALSRC_pn-hello = "${S}"  
EXTERNALSRC_BUILD_pn-hello = "${B}"  
EXTERNALSRC_SYMLINKS_pn-hello = ""  
DEPENDS = "grpc-native protobuf-native protobuf-c gflags c-ares protobuf-c-native openssl"  
PR = "r1"  
PARALLEL_MAKE =""  
TARGET_CXX_ARCH += "${LDFLAGS}"  

do_compile() {  
oe_runmake  
}  

ALLOW_EMPTY_${PN} = "1"  
FILES_${PN} = "/*"  

请找到它的生成文件。

CXX = arm-poky-linux-gnueabi-g++  -march=armv7-a -mfpu=neon  -mfloat-abi=hard -mcpu=cortex-a8 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/home/admin/BUILD/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/hello-demo/0.1.0-r1/recipe-sysroot

CXXFLAGS += -std=c++11
ifeq ($(SYSTEM),Darwin)
LDFLAGS += -L/usr/local/lib  `pkg-config --libs protobuf grpc++ grpc`
-ldl
else
LDFLAGS +=  -L/home/admin/BUILD/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/hello-demo/0.1.0-r1/recipe-sysroot/usr/lib -Wl,--no-as-needed -lgrpc++_reflection -Wl,--as-needed
-ldl
endif
PROTOC = protoc
GRPC_CPP_PLUGIN = grpc_cpp_plugin
GRPC_CPP_PLUGIN_PATH ?= /home/admin/BUILD/tmp/sysroots-components/x86_64/grpc-native/usr/bin/grpc_cpp_plugin
PROTOS_PATH = ./
vpath %.proto $(PROTOS_PATH)
all: hello_client hello_server
hello_client: hello.pb.o hello.grpc.pb.o hello-client.o
$(CXX) $^ $(LDFLAGS) -o $@

hello_server: hello.pb.o hello.grpc.pb.o hello-server.o
$(CXX) $^ $(LDFLAGS) -o $@

.PRECIOUS: %.grpc.pb.cc
%.grpc.pb.cc: %.proto
$(PROTOC) -I $(PROTOS_PATH) --grpc_out=. --plugin=protoc-gen-  grpc=$(GRPC_CPP_PLUGIN_PATH) $<
.PRECIOUS: %.pb.cc
%.pb.cc: %.proto
$(PROTOC) -I $(PROTOS_PATH) --cpp_out=. $<
clean:
rm -f *.o *.pb.cc *.pb.h hello_client hello_server

请找到我的grpc_1.8.5.bb文件。

我认为这与gRPC示例无关,看起来Linux上的protoc安装脚本有问题——它没有更新动态库绑定。尝试从根目录运行"ldconfig"。然后运行"protoc",没有任何争论。