C ++ terminate вызывается после выброса экземпляра 'std :: system_error'

Недавно я начал работать над Grpc. При компиляции Grpc C ++ я получаю ошибку ниже, не знаю, что вызвало проблему.

Я не из C ++, любая помощь будет мне очень полезна.

[HOSTLD] Связывание / home / test / grpc / bins / opt / grpc_ruby_plugin [PROTOC] Создание файла CC protobuf из src / proto / grpc / channelz / channelz.proto [GRPC] Создание файла CC службы protobuf gRPC из src / proto / grpc /channelz/channelz.proto

terminate вызывается после создания экземпляра 'std :: system_error'

what (): Неизвестная ошибка -1

--grpc_out: protoc-gen-grpc: плагин отключен сигналом 6.

make: *** [/home/test/grpc/gens/src/proto/grpc/channelz/channelz.grpc.pb.cc] Ошибка 1

До этого я пробовал кросс-компиляцию, и это приводило к "ошибке сегментации grpc" при коммуникации helloworld. Чтобы прояснить это, я выполнил следующий шаг.

Я уничтожил свой / usr / local / lib / и удалил все библиотеки proto и grpc

rm -f / usr / local / lib / libproto * / usr / local / lib / libgrpc *

Все почистил

подмодуль git foreach git clean -xfd

git clean -xfd

Затем переустановил все, но все равно получаю указанную выше ошибку. Может ли кто-нибудь помочь мне в этом вопросе?

Примечание. Я полностью удалил папку grpc и переклонировал ее. Установлен protobuf, и установка protobuf прошла успешно, но когда я даю команду «make» в gRPC, я получаю указанную выше ошибку.

Когда я погуглил, это выглядело как какая-то общая ошибка со стороны С ++.

Ниже приведены шаги, которые я выполнил:

• git clone -b $ (curl -L http://grpc.io/release) https://github.com/grpc/grpc

• cd grpc

• обновление подмодуля git --init

• cd third_party / protobuf

• ./Autogen.sh

• ./configure

• make && make install (установка Protobuf прошла успешно)

• зайти в папку grpc и дать make.

Это не удалось, выдает завершение, вызываемое после выброса экземпляра 'std :: system_error'


person Murali Perumal    schedule 03.12.2018    source источник
comment
Используйте отладчик, чтобы найти точку, в которой возникает исключение (это означает, что в программе есть код проверки ошибок, который намеренно выдает, когда вызов ОС возвращает код ошибки)   -  person M.M    schedule 03.12.2018
comment
Это происходит из libprotobuf FATAL google / protobuf / generated_message_util.cc: 785] Ошибка проверки: я уверен, что все работает правильно, чтобы избежать некоторых проблем, я удалил rm -f / usr / local / lib / libproto * / usr / local / lib / libgrpc * только после этого я столкнулся со всеми этими проблемами.   -  person Murali Perumal    schedule 03.12.2018
comment
Похоже, что библиотека pthread отсутствует, но не знаю, как ее добавить.   -  person Murali Perumal    schedule 03.12.2018


Ответы (1)


Я получил решение для этого, из-за того, что pthread не был настроен должным образом.

выполнение приведенной ниже команды из папки protobuf решило проблему.

pkg-config --cflags protobuf # выводить флаги компилятора

pkg-config --libs protobuf # выводить флаги компоновщика

pkg-config --cflags --libs protobuf # распечатать оба

./configure CXXFLAGS = "$ (pkg-config --cflags protobuf)" LIBS = "$ (pkg-config --libs protobuf)"

делать

[sudo] сделать установку

перейдите в папку grpc и выполните команду make.

person Murali Perumal    schedule 03.12.2018
comment
Большой! Я столкнулся с той же проблемой, ваше решение у меня сработало. Большое спасибо! - person Ben Chen; 28.02.2019
comment
Есть открытая проблема на github / googlesamples github.com/googlesamples/assistant-sdk -cpp / pull / 54, возможно, им нужен ваш ответ как решение. Интересно, как вы нашли это решение. - person Ben Chen; 28.02.2019
comment
В моем случае мне просто нужно было добавить -lpthread к моей команде компиляции - person Diego Pino; 08.12.2019