Не удается скомпилировать прото-файл в Ubuntu для Golang

Я установил эти пакеты:

google.golang.org/grpc

github.com/golang/protobuf/protoc-gen-go

и экспортированный путь следующим образом:

export PATH=$PATH:/usr/local/go/bin

когда я пытаюсь скомпилировать прото-файл с помощью команды протокол, я вижу, что команда не найдена:

protoc --go_out=. helloworld/helloworld.proto 

zsh: command not found: protoc

мой путь к проекту выглядит так: /home/my-username/go/src/github.com/my-username/helloworld

моя версия: go1.12.5

и я использую убунту 18.04

Когда я устанавливаю его с помощью двоичного файла, он работает, но скомпилированный файл go не содержит некоторых функций, таких как: RegisterGreeterServer или NewGreeterClient.

Вы устанавливаете прото?

Philidor 24.05.2019 09:42

@Зеленый да установил

Ali Soltani 24.05.2019 09:44

Попробуйте найти protoc в /usr/bin или /usr/local/bin.

Philidor 24.05.2019 09:45

нет такого файла

Ali Soltani 24.05.2019 09:47

следовательно, установка protobuf не удалась. Протобуф доставить protoc.

Philidor 24.05.2019 09:48

Покажите свою переменную PATH, похоже, она как-то запуталась. echo $PATH

Philidor 24.05.2019 09:53

путь: /home/my-username/.local/bin:/usr/local/sbin:/usr/local/bin:‌​/usr/sbin:/usr/bin:/‌​sbin:/bin:/usr /games‌​:/usr/local/games:/s‌​nap/bin:/usr/local/g‌​o/bin

Ali Soltani 24.05.2019 09:57

Как вы установили protobuf? Показать все шаги.

Philidor 24.05.2019 10:01

Я установил его, используя это: go get -u github.com/golang/protobuf/protoc-gen-go, выполнив шаги github.com/golang/protobuf

Ali Soltani 24.05.2019 10:08

Это библиотека, а не protobuf.

Philidor 24.05.2019 10:15

@Зеленый, как мне установить protobuf для go?

Ali Soltani 24.05.2019 10:16

Например, gist.github.com/olivoil/a2e0e4f3427db8b6ef4a6374f9c4cb32

Philidor 24.05.2019 10:30

Я протестировал его, но когда он компилирует прото-файл, скомпилированный файл не содержит некоторых функций, таких как: RegisterGreeterServer или NewGreeterClient.

Ali Soltani 24.05.2019 10:36

Эта другая проблема, не связанная с вашим вопросом

Philidor 24.05.2019 10:40

Пакет protobuf-compiler, представленный в упомянутой вами ссылке, не содержит этих функций при компиляции! Я знаю, что должен использовать пакет protoc-gen-go в golang, но не знаю, почему он не работает.

Ali Soltani 24.05.2019 10:44
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
0
15
1 662
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

zsh: command not found: protoc указывает, что protoc не установлен на вашем компьютере. Для этого вам нужно загрузить двоичный файл с Официальные релизы, так как вы находитесь на ubuntu машине, я предлагаю вам скачать протокол-3.7.1-linux-x86_64.zip (это последняя protoc на момент написания этого ответа, вы должны проверить releases и скачать последнюю версию)

Вы можете скачать через браузер или использовать следующую команду:

wget "https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-linux-x86_64.zip" -O protoc-3.7.1-linux-x86_64.zip

Теперь разархивируйте, вы получите две папки: «bin» и «include».

Скопируйте bin/protoc в /usr/local/bin/protoc и include/google в /usr/local/include/google

Это правильно установит protoc на вашем компьютере.

Чтобы убедиться, что он установлен правильно, попробуйте выполнить команду protoc на своем терминале. Вы должны получить что-то вроде следующего

Если вы все еще сталкиваетесь с какими-либо проблемами, пожалуйста, дайте мне знать.

Надеюсь это поможет!

Спасибо, это помогло мне. Я обнаружил проблему и опубликовал свой ответ stackoverflow.com/a/56293038/6173668

Ali Soltani 24.05.2019 14:53

Просто добавим, что файлы, которые входят в папку под /usr/local/include, должны быть скопированы вместе со структурой каталогов.

Sunil Kumar 18.04.2020 20:40
Ответ принят как подходящий

Наконец с помощью Амит я установил protoc. но когда я скомпилировал прото-файл с помощью этой команды

protoc --go_out=. add/add.proto    

go скомпилированный файл не содержал некоторых функций, таких как, например, RegisterGreeterServer или NewGreeterClient.

от этот ответ я обнаружил проблему и добавил plugins=grpc, затем попробовал эту команду, и она сработала:

protoc --go_out=plugins=grpc:. add/add.proto

Другие вопросы по теме