cmakeList编译protobuf.pb.h时报错fatal error: google/protobuf/port_def.inc: No such file or directory

2023-05-16

写一个protobuf文件,编译后会生成两个文件一个.cc和一个.h文件。

export LD_LIBRARY_PATH=/usr/local/lib

protoc --cpp_out=./ forward_protobuf.proto

单独的编译命令:g++ -o pub_boche2.out publish_boche.cpp protoBuf/forward_protobuf.pb.cc -lprotobuf -lpthread -std=c++11 -lpaho-mqtt3as

但是在cmakeList中编译时出现了状况。

from /mnt/hgfs/V2X_GT_code/parkingProject/appv_forward/src/appv_forward.cpp:4:
/mnt/hgfs/V2X_GT_code/parkingProject/appv_forward/src/../inc/../protoBuf/forward_protobuf.pb.h:10:40: fatal error: google/protobuf/port_def.inc: No such file or directory
compilation terminated.
 

此时需要查看自己想要运行的环境是X86架构还是arm架构

这个目录下是arm的库文件

/opt/genvict-imx-fb/4.1.15-1.2.1/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr/lib

 

这个目录下是X86的库文件

/usr/local/lib

/usr/lib

使用readelf -h 库文件 就可以查看到文件的架构

 

linux系统上编译arm版的protobuf库

 

准备条件:

1.安装gcc编译器和make

2.安装arm-linux或其他arm编译器

可以用arm-linux-gcc -v和gcc -v来检查编译器版本。

 

从官网下载protobuf-2.5.0.tar.gz.

第一步是编译出x86版的库和protoc,

按顺序执行下列命令

tar -zxvf protobuf-2.5.0.tar.gz

cd protobuf-2.5.0

./configure

make

make check

sudo make install

这时已经编译出一个linux版的protobuf库和protoc, 这时需要开始来编arm版,因为下一步需要可以在linux上运行的protoc,所以上面的步骤不能少。

下面开始编译arm版

make clean

./configure --host=arm-linux --with-protoc=protoc

make

如果没有出错,那么arm版的库就编译出来了, 他们的位置是

protobuf-2.5.0/src/.libs/

使用readelf -h libprotobuf-lite.a来查看文件信息,如果对应machin值是ARM,那么就是大功告成了。
 

 

这样安装后库文件会生成在当前解压目录下的/src/.libs/下面

 

解决方法:重新添加配置到你的交叉编译工具链(arm)所在的目录,如果是X86架构的那么不需要

但是编译时会报错

修改目录 #目录需要根据自己的实际情况来写。

 ./configure --prefix=/opt/genvict-imx-fb/4.1.15-1.2.1/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi/usr --host=arm-linux --with-protoc=protoc   
  make   #安装
这样的话,再编译就不会报错了

 

需要分清包含的库文件是静态库还是动态库

#cmake verson 
cmake_minimum_required(VERSION 2.8)
#add gdb 
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
#project name 
project(v2x_pad_OBU_can)

#include cmake file
include(../toolchain.cmake)

#compile parameter
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")

#set output path 
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) 
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

#head file path 
include_directories( 
inc 
../libcomsocket/inc
../libv2xgeneral/inc
../libv2xgeneral/inc/msg
../libv2xgeneral/inc/codec
../libv2xgeneral/inc/rapidjson
_install/include
)

#source directory 
aux_source_directory(src SRC_LIST)

#link directory
link_directories(
../../libcomsocket/lib
../../libv2xgeneral/lib
../_install/lib
../lib
)

#add executable file 
add_executable(${PROJECT_NAME} ${SRC_LIST}) 

#add link library 
target_link_libraries(${PROJECT_NAME} comsocket v2xgeneral pthread paho-mqtt3as libprotobuf.a libprotoc.a)

静态库需要把名字写全

动态库可以把前面的lib和后面的 .so后缀去掉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cmakeList编译protobuf.pb.h时报错fatal error: google/protobuf/port_def.inc: No such file or directory 的相关文章

  • Python 绝对简明手册

    原文 简述 1 阅读须知 文中使用 gt gt gt 作为会命令行中的输出信息的前缀 对于不清楚用用途的函数可以在解释器下面输入 help 函数名 来获取相关信息 另外 自带的文档和google也是不可少的 2 基本语法 2 1 if el
  • 新版eclipse编写Android 时经常报的错误 -support-v7

    一 和以往一样新建完一个Android项目之后 会报android support v4 或者V7找不到的错误 这是因为这两个包在另一个附带的项目 android support v7 appcompat 下 解决办法 右键你刚才建 的项目
  • C++Protobuf的生成与使用

    编写 proto文件 syntax 表明protobuf的版本号 末尾不要忘了 package 表明生成的类对象位于哪一个命名空间 末尾不要忘了 每一个类属性后面的必须跟一个编号 且不能重复 syntax proto3 package Pr
  • 比尔盖茨现身西雅图SAS 2007“治疗失眠”

    结束了4月18 21号的访华活动 比尔盖茨又现身在了西雅图5月8号开始的为时两天的第八届微软战略合作伙伴高峰会议上 Strategic Account Summit Conference 这次会议请来了众多重量级的大腕嘉宾 包括负责微软网络
  • Ubuntu 下配置protobuf

    首先得到 protobuf 相应的包文件 在终端上输入如下 wget http protobuf googlecode com files protobuf 2 5 0 tar gz 由于 现在 protobuf 2 5 0 tar gz已
  • 30个适合女生玩的可爱网站

    ugmbbc发布于 2008 03 20 13 30 12 2905 次阅读 字体 大 小 打印预览 感谢不要笑我的投递这次推荐给大家的都是非常好玩和可爱的网站 他们都拥有不错的技术和创意 这些网站尤其适合女孩子玩 当然cnBeta是一个罗
  • 讲述IT人的程序人生,IT人心声,职业生涯,职场规划,程序员爱情优美文章155篇

    讲述IT人的程序人生 IT人心声 职业生涯 职场规划 程序员爱情优美文章155篇 来自 http www ithao123 com itlife 1 程序人生 程序 烟 我的人生2 程序人生 做技术 切不可沉湎于技术3 程序员 不得不习惯一
  • C++下的protobuf简单使用

    Google Protocol Buffer API简单使用总结 大致步骤如下 1 编写 msg proto 文件 package lm 我理解成命名空间 message helloworld 我理解成类 required int32 id
  • 【ERROR】AssertionError: The NVIDIA driver on your system is too old (found version). Please upd

    错误信息 AssertionError The NVIDIA driver on your system is too old found version 10000 Please update your GPU driver by dow
  • Protobuf类型

    1 基本类型 这些是原始的基本数据类型 用于存储数值和字符串 包括 double 双精度浮点数 float 单精度浮点数 int32 32 位有符号整数 int64 64 位有符号整数 uint32 32 位无符号整数 uint64 64
  • Google App Engine对Java支持情况一览

    Google App Engine对Java支持情况一览 http developer 51cto com 2009 04 09 11 06 杨赛 译 51CTO com 我要评论 0 Google App Engine的Java支持已发布
  • version `GLIBCXX_3.4.14‘ not found

    Gate usr lib64 libstdc so 6 version GLIBCXX 3 4 14 not found required by Gate 本人测试gcc 8 3 0装不上 可考虑7 30亲测可装 4 81也测试过了 可以装
  • python中用pickle打开文件报错:EOFError: Ran out of input

    用pickle dump 保存文件之后如果不关闭文件就会出现此错误 f open test pkl wb pickle dump dict f f close 后面添加关闭就不会报错
  • Your python install is corrupted. Please fix the '/usr/bin/python' symlink.

    执行如下命令就ok了 sudo ln sf usr bin python2 7 usr bin python 如果还是不行 reinstall sudo apt get install reinstall python 参考地址 https
  • Hello! protobuf——编译与安装(c++版)

    目录 前言 一 protobuf是什么 二 protobuf官方路径 三 protobuf编译安装 1 安装前建议 2 cmake使用 1 cmake介绍 2 命令行介绍 3 编译选项介绍 4 cmake安装 3 windows下使用nma
  • Windows安装程序遇到错误:0x80240037

    在安装微软的程序时遇到此错误 本例以安装PB的帮助文档为例 解决办法是 第一步 更改安装文件后缀 第二步 Win R执行 第一步 将msu后缀更改为cab 更改后变为 然后将其解压到一个新文件夹 比如cab 解压后的内容为 第二步 WIN
  • Go_异常处理

    Error 异常就是程序出现了不正常的情况 会导致程序非正常停止 而异常处理就是针对非正常停止的情况 给出异常时的处理方式 语法错误不算异常体系中 error是一个接口 作用是返回程序异常的信息 errors实现了error type er
  • [Binospace] Google-MegaStore的解读

    MegaStore是Google在BigTable之上实现了一个跨机房高可用的数据库 它提供了类似DB的数据分布 索引的功能 实现了在EntityGroup内部以及EntityGroup之间的事务性 并且通过Paxos协议实现在DC之间多备
  • code style

    最近一直在看java convention和google c style 因为老板要提高代码质量 我们小公司一个 因为客户说我们的代码质量太烂了 于是开始搞代码质量 先从静态 代码质量开始 于是就研究起来code style 但是 我发现
  • 最快的公共dns服务器_如何使用Google公共DNS服务器?

    最快的公共dns服务器 Google is a huge company that provides paid and free services It mainly operates in the IT and internet area

随机推荐