Я установил grpc-java в соответствии с инструкциями на свой Mac (под управлением Mavericks). Это включало установку protobuf v3.0.0-alpha-2, что я и сделал:
$ which protoc
/usr/local/bin/protoc
$ /usr/local/bin/protoc --version
libprotoc 3.0.0
Примеры Java работают нормально. Теперь я хотел бы попробовать примеры C ++ и, в идеале, попросить клиента C ++ поговорить с сервером Java и наоборот.
Я клонировал grpc и попытался его установить. sudo make install
и, впоследствии, make verify-install
терпят неудачу, сообщая мне, что protobuf 3 не установлен:
$ 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
В строке 259 файла grpc / Makefile я вижу этот тест:
PROTOC_CHECK_CMD = protoc --version | grep -q libprotoc.3
Если я запускаю protoc --version
на своем Mac, я вижу что-то другое (см. Выше), поэтому я попытался изменить строку выше на
PROTOC_CHECK_CMD = protoc --version | grep -q 'libprotoc 3.0.0'
Однако я получаю ту же ошибку от make verify-install
.
Я также попытался удалить тесты PROTOBUF_CHECK_CMD и PROTOC_CHECK_CMD в run_dep_checks (о строке № 895), но установка по-прежнему не выполняется с той же ошибкой.
Когда я запускаю make на grpc-common / cpp / helloworld, он строит, но оба greeter_client и greeter_server терпят неудачу:
$ ./greeter_server
E0310 17:38:23.349841000 140735186797328 server.c:617] assertion failed: grpc_is_initialized() && "call grpc_init()"
Abort trap: 6
Я предполагаю, потому что проблема с установкой grpc.
Итак, protobuf 3 явно установлен. Как я могу убедить Makefile в этом или хотя бы обойти этот тест?
grep
должна работать.grep
использует регулярные выражения, поэтому.
соответствует любому символу и выполняет сопоставление подстроки, поэтому он должен соответствоватьlibprotoc 3
части строки версии. В любом случае это не должно быть проблемой. Если бы это было так, Makefile в примере C ++ helloworld не удалось бы. - person murgatroid99   schedule 11.03.2015