J'ai installé grpc-java selon le instructions sur mon Mac (exécutant Mavericks). Cela comprenait l'installation protobuf v3.0.0-alpha-2, ce que je fis:grpc make ne peut pas trouver le protocole 3
$ which protoc
/usr/local/bin/protoc
$ /usr/local/bin/protoc --version
libprotoc 3.0.0
Les exemples Java fonctionnent très bien. Maintenant, je voudrais essayer les exemples C++ et, idéalement, avoir un client C++ parler à un serveur Java et vice-versa.
J'ai cloné grpc et j'ai tenté de l'installer. sudo make install
et, par la suite, make verify-install
échouent, me disant que protobuf 3 n'est pas installé:
$ make verify-install
We couldn't find protoc 3.0.0+ installed on your system. While this
won't prevent grpc from working, you won't be able to compile
and run any meaningful code with it.
Please download and install protobuf 3.0.0+ from:
https://github.com/google/protobuf/releases
Once you've done so, or if you think this message is in error,
you can re-run this check by doing:
make verify-install
en ligne 259 de GRPC/Makefile, je vois ce test:
PROTOC_CHECK_CMD = protoc --version | grep -q libprotoc.3
Si je lance protoc --version
sur mon Mac, je vois quelque chose de différent (voir ci-dessus), donc j'ai essayé de changer la ligne ci-dessus pour
PROTOC_CHECK_CMD = protoc --version | grep -q 'libprotoc 3.0.0'
Cependant, je reçois la même erreur de make verify-install
J'ai également essayé de supprimer les tests PROTOBUF_CHECK_CMD et PROTOC_CHECK_CMD à run_dep_checks (sur la ligne # 895) mais l'installation échoue toujours avec la même erreur.
Quand je lance make sur grpc-common/cpp/helloworld, il construit, mais greeter_client et les deux greeter_server échouent:
$ ./greeter_server
E0310 17:38:23.349841000 140735186797328 server.c:617] assertion failed: grpc_is_initialized() && "call grpc_init()"
Abort trap: 6
Je suppose que le problème avec l'installation de GRPC.
Donc, protobuf 3 est clairement installé. Comment puis-je convaincre le Makefile de cela, ou au moins contourner ce test?
Le message à propos de protoc missing n'est pas un échec de construction, il est simplement informatif. Notez qu'il est dit "cela n'empêchera pas grpc de fonctionner". – murgatroid99
Cette commande 'grep' d'origine devrait fonctionner. 'grep' utilise des expressions régulières, ainsi'. 'correspond à n'importe quel caractère, et il fait correspondre la sous-chaîne, donc il devrait correspondre à la partie 'libprotoc 3' de la chaîne de version.En tout cas, cela ne devrait pas être le problème. Si c'était le cas, le Makefile dans l'exemple Cellow helloworld n'aurait pas réussi. – murgatroid99