安装多个版本时使用特定的 protobuf 版本
Use specific protobuf version when multiple versions are installed
我正在尝试编译 PX4, according to PX4's instructions 提供的凉亭示例。我正在 Ubuntu-18.04.
当运行命令:make px4_sitl gazebo
时,出现以下错误:
...
In file included from Range.pb.h:27:0,
from Range.pb.cc:5:
/usr/include/gazebo-9/gazebo/msgs/quaternion.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
#error This file was generated by a newer version of protoc which is
^~~~~
/usr/include/gazebo-9/gazebo/msgs/quaternion.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
#error incompatible with your Protocol Buffer headers. Please update
^~~~~
/usr/include/gazebo-9/gazebo/msgs/quaternion.pb.h:14:2: error: #error your headers.
#error your headers.
^~~~~
...
将错误消息拼凑起来得到:此文件是由与您的 Protocol Buffer 不兼容的较新版本的 protoc 生成的 headers。请更新您的 headers.
我的机器上有两个不同的 protoc
二进制文件:
/usr/bin/protoc
(3.0.0),最低版本要求
~/catkin_ws/devel/bin/protoc
(2.6.0),太旧了,默认使用
如何确保使用第一个版本?我试过这个:export PATH=/usr/bin:$PATH
以确保首先找到正确的编译器,但我可能还需要指示使用正确的 headers,因此 /usr/include/google/protobuf
中的编译器而不是 [=17] =].但是,我不确定如何进行。
好的,所以简单地使错误的路径无效(修改它)迫使make
使用正确的编译器版本,因为它再也找不到错误的版本了。
奇怪的是,将正确版本的路径放在PATH
变量中似乎没有任何效果。
我正在尝试编译 PX4, according to PX4's instructions 提供的凉亭示例。我正在 Ubuntu-18.04.
当运行命令:make px4_sitl gazebo
时,出现以下错误:
...
In file included from Range.pb.h:27:0,
from Range.pb.cc:5:
/usr/include/gazebo-9/gazebo/msgs/quaternion.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is
#error This file was generated by a newer version of protoc which is
^~~~~
/usr/include/gazebo-9/gazebo/msgs/quaternion.pb.h:13:2: error: #error incompatible with your Protocol Buffer headers. Please update
#error incompatible with your Protocol Buffer headers. Please update
^~~~~
/usr/include/gazebo-9/gazebo/msgs/quaternion.pb.h:14:2: error: #error your headers.
#error your headers.
^~~~~
...
将错误消息拼凑起来得到:此文件是由与您的 Protocol Buffer 不兼容的较新版本的 protoc 生成的 headers。请更新您的 headers.
我的机器上有两个不同的 protoc
二进制文件:
/usr/bin/protoc
(3.0.0),最低版本要求~/catkin_ws/devel/bin/protoc
(2.6.0),太旧了,默认使用
如何确保使用第一个版本?我试过这个:export PATH=/usr/bin:$PATH
以确保首先找到正确的编译器,但我可能还需要指示使用正确的 headers,因此 /usr/include/google/protobuf
中的编译器而不是 [=17] =].但是,我不确定如何进行。
好的,所以简单地使错误的路径无效(修改它)迫使make
使用正确的编译器版本,因为它再也找不到错误的版本了。
奇怪的是,将正确版本的路径放在PATH
变量中似乎没有任何效果。