Старый заголовок: Как скомпилировать файл nanopb / examples / simple / simple.proto в simple.h и simple.c с помощью nanopb и protobuf
Относительно этой библиотеки: https://github.com/nanopb/nanopb
Моя цель - следовать этому руководству: https://jpa.kapsi.fi/nanopb/docs/concepts.html, чтобы преобразовать nanopb / examples / simple / simple.proto в исходный файл .h и .c. Мне нужны простые инструкции, чтобы сделать это в Ubuntu. Я пытался это сделать несколько дней и не могу заставить его работать.
В учебном пособии говорится о следующих командах:
protoc -omessage.pb message.proto
python ../generator/nanopb_generator.py message.pb
Я клонировал репозиторий nanopb, записал его в nanopb / examples / simple, а затем заменил simple.proto
вместо message.proto
в приведенных выше командах, я выполнил следующее:
protoc -osimple.pb simple.proto
Он работал нормально, создавая файл simple.pb.
Вторая часть, однако, не удалась. При запуске из папки nanopb / examples / simple я получаю:
$ python ../../generator/nanopb_generator.py simple.pb
********************************************************************
*** Failed to import the protocol definitions for generator. ***
*** You have to run 'make' in the nanopb/generator/proto folder. ***
********************************************************************
Traceback (most recent call last):
File "../../generator/nanopb_generator.py", line 39, in <module>
import proto.nanopb_pb2 as nanopb_pb2
File "/home/gabriels/GS/dev/Protocol_Buffers/Nanopb/source/nanopb/generator/proto/nanopb_pb2.py", line 11, in <module>
from google.protobuf import symbol_database as _symbol_database
ImportError: cannot import name symbol_database
Запуск make
ничего не делает (говорит, что уже сделано):
nanopb/generator/proto $ make
make: Nothing to be done for `all'.
Обратите внимание, что я использую последнюю версию protoc
, созданную из репозитория Google protobuf из источника: https://github.com/protocolbuffers/protobuf.
Я также обратился за помощью к nanopb здесь, но не могу понять это и чувствую, что здесь есть что-то базовое, что мне не хватает, потому что я просто недостаточно знаю: https://github.com/nanopb/nanopb/issues/417. Такое ощущение, что я бью головой о стену о чем-то, что должно быть простым и уже было сделано как минимум 1448+ людьми до меня (количество звезд на nanopb).