海湾合作委员会的Protobuf编译问题
gcc's protobuf compilation issue
我正在使用gcc。
运行ubuntu 16.04我的q.ccp
文件是
#include <my_messages.pb.h>
int main(int argc, char **argv)
{
google::protobuf::MyMessage* logged_msg_;
return 0;
}
用于编译的命令:
g++ -m64 -Wl,-O1 -L/usr/lib/x86_64-linux-gnu /usr/local/lib/libprotobuf.a my_messages.pb.cc q.cpp -lpthread
protoc --version
返回: 2.2.0
gcc- version
gcc (Ubuntu 4.8.5-4ubuntu2) 4.8.5
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
编译错误以
开头undefined reference to `google::protobuf::internal::ExtensionSet::Clear()
并给出协议缓冲区的每个函数的未定义参考错误。
对GCC的参数顺序很重要(库应追随对象文件和源文件)。您可能想要
g++ -Wall -m64 -O1 -g -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib/
my_messages.pb.cc q.cpp -lprotobuf -lpthread
(我相信-Wl,-O1
是错误的,没有用,但是我离开您去检查)
花一些时间阅读文档的GCC命令选项章节。您可能需要(暂时)使用g++ -v
而不是上述命令中的g++
来了解正在发生的事情。
您可能应该将GNU Make用于构建。有关灵感,请参见Makefile
的示例。花一些时间阅读make
的文档。
相关文章:
- 二叉排序树无法编译
- CMake 在编译 Google 的 protobuf 示例时找不到 protobuf
- 如何编译谷歌Protobuf命令行界面编译
- 使用正确的 protobuf 编译faster_rcnn_cplusplus和咖啡示例
- Protobuf 生成的C++类无法针对 iOS 进行编译,并显示错误"Only virtual member functions can be marked 'final'"
- remy source code(github) 编译错误在 protobuf 类
- 已编译的 protobuf 文件的意外输出路径
- 用第三方框架编译时Tensorflow Protobuf冲突
- 在 Centos 7 上交叉编译 protobuf 2.5.0 for Android
- GRPC编译错误Protobuf 3.2.0(用旧版本的Protoc生成文件)Ubuntu 16.04
- Protobuf:了解原型文件的编译输出
- 在 Ubuntu 上编译 Protobuf 客户端代码,但找不到包含文件
- 海湾合作委员会的Protobuf编译问题
- Protobuf在Ubuntu上不编译
- C++2010 Express Protobuf编译错误
- 是否可以在 protobuf 中发送编译的 protobuf 消息定义
- Protobuf 3.0.0-alpha-1 无法在 Windows 上编译
- 带有协议缓冲区的程序无法使用 MinGW-w64 编译:"undefined reference to google::protobuf:: ..."
- 如何在OS X上编译Google的protobuf编译器生成的C++文件
- 编译Tensorflow时出现Protobuf错误