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

时间:2018-04-23 07:27:48

标签: c++ linux c++11 yocto grpc

嘿,我正在尝试在Ubuntu 16.04 LTS上为yocto pyro移植helloorld,基于cpp的演示gRPC用于目标臂,。但我得到了错误。

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

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

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

Makefile:55:目标'hello.grpc.pb.cc'faile的食谱

所以任何人都可以建议解决此错误的步骤。

请找到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} = "/*"  

请找到它的makefile。

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文件。

1 个答案:

答案 0 :(得分:0)

我认为它与gRPC示例无关,看起来Linux上的protoc安装脚本存在问题 - 它不会更新动态库绑定。 尝试从root运行“ldconfig”。并且在它之后运行“protoc”,没有任何争论。