致命错误:找不到“google/protobuf/compiler/plugin.h”文件

Posted

技术标签:

【中文标题】致命错误:找不到“google/protobuf/compiler/plugin.h”文件【英文标题】:fatal error: 'google/protobuf/compiler/plugin.h' file not found 【发布时间】:2019-03-05 10:40:45 【问题描述】:

我正在从 these sources 编译一个 Google protobuf 插件。

我已经使用自制命令安装了protobuf@2.5:

brew install protobuf@2.5

安装后我在尝试通过调用make 进行编译时收到以下错误:

Richards-Mac-mini:protobuf-objc-arc richard$ make
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in src/compiler
g++ -DHAVE_CONFIG_H -I. -I../..     -g -O2 -DNDEBUG -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cc
main.cc:17:10: fatal error: 'google/protobuf/compiler/plugin.h' file not found
#include <google/protobuf/compiler/plugin.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [main.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

这行特别有趣:

虽然我绝对可以通过这条路径找到plugin.h 文件:

/usr/local/Cellar/protobuf@2.5/2.5.0/include/google/protobuf/compiler/plugin.h

看起来,库与二进制文件的链接不正确,问题与正确的路径有关。

当我尝试发出命令 which protoc 时,我得到:

/usr/local/opt/protobuf@2.5/bin/protoc

protoc --version 导致以下输出,这是预期的。

libprotoc 2.5.0

【问题讨论】:

【参考方案1】:

通过发出以下命令修复:

brew link --force --overwrite protobuf250

输出:

Linking /usr/local/Cellar/protobuf@2.5/2.5.0... 14 symlinks created

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/protobuf@2.5/bin:$PATH"' >> ~/.bash_profile

然后:

echo 'export PATH="/usr/local/opt/protobuf@2.5/bin:$PATH"' >> ~/.bash_profile

成功链接后,我能够毫无错误地编译 Objective-C 插件。

【讨论】:

以上是关于致命错误:找不到“google/protobuf/compiler/plugin.h”文件的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 pandas.read_gbq() 函数时,pandas-gbq 抛出错误“找不到字段 google.protobuf.FileOptions.php_metadata_namespace”

Gradle protoc 插件找不到默认的 google proto 文件

颤振:“致命错误:找不到模块'位置'”Xcode找不到模块

致命错误:找不到类“Modelmyaccount”

Laravel - 致命错误:未捕获的错误:找不到类'Auth'

致命错误:在中找不到类 'Dotenv\Dotenv'