从源码编译protobuf时如何跳过构建protoc?
Protobuf iOS交叉编译跳过protoc构建方法
完全可以跳过protoc构建步骤,protoc作为.proto文件的编译工具,仅需在编译宿主(通常为Mac)上运行,不需要适配iOS目标架构,只要版本匹配即可直接使用官方预编译版本。
具体配置操作
使用CMake进行交叉编译配置时,添加以下两个参数即可:
- 关闭protoc二进制构建:
-Dprotobuf_BUILD_PROTOC_BINARIES=OFF - 指定你已下载的官方预编译protoc的完整路径:
-Dprotobuf_PROTOC_EXECUTABLE=/你的protoc存放路径/protoc
注意事项
- 必须保证预编译protoc的版本与你当前编译的protobuf源码版本完全一致,避免生成代码与运行时库版本不兼容的问题
- 若使用3.20及更早版本的protobuf,对应配置参数略有不同,需改为
-DBUILD_PROTOC=OFF和-DPROTOC_EXECUTABLE=/你的protoc存放路径/protoc,可直接查看源码根目录的CMakeLists.txt确认参数定义 - 对应的
Undefined symbols与ld: warning: ignoring file报错,本质是默认配置下会为iOS目标架构编译protoc,生成的iOS架构二进制无法在Mac宿主上运行导致,跳过protoc构建直接使用Mac版预编译protoc即可直接解决该问题
内容的提问来源于stack exchange,提问作者ch271828n
相关产品推荐
相关产品推荐

