Ubuntu下libprotoc 3.15.8执行make -j时出现port_def.inc缺失错误
解决编译时找不到
google/protobuf/port_def.inc的问题 排查解决步骤:
补全Protobuf开发依赖
你当前只安装了libprotoc编译工具,但Protobuf的头文件、开发库可能缺失。在Ubuntu下执行以下命令补装:sudo apt-get update && sudo apt-get install libprotobuf-dev如果系统源提供的libprotobuf-dev版本和你的3.15.8差异较大,建议手动编译安装对应版本的Protobuf:
- 下载Protobuf 3.15.8源码包并解压,进入源码目录
- 依次执行:
./configure --prefix=/usr/local/protobuf make -j$(nproc) sudo make install sudo ldconfig
让CMake正确识别Protobuf路径
如果是自定义路径安装的Protobuf,执行cmake时需指定路径:cmake -DCMAKE_PREFIX_PATH=/usr/local/protobuf ..同时检查项目的CMakeLists.txt,确保有正确的Protobuf配置:
find_package(Protobuf REQUIRED) include_directories(${Protobuf_INCLUDE_DIRS})清理旧编译文件重新构建
先清除之前的编译残留:make clean rm CMakeCache.txt之后重新执行cmake和make命令。
验证自动生成的pb文件
确认config_vals.pb.h是用你本地3.15.8版本的protoc生成的,先执行protoc --version确认版本,再重新生成一次pb文件:protoc --cpp_out=. /path/to/config_vals.proto
内容的提问来源于stack exchange,提问作者Bugsfounder
相关产品推荐
相关产品推荐

