linux protobuf静态库,iOS 生成protobuf静态库

要求

生成一个3.6.1的C++版本protobuf静态库

编译

在github上找到protobuf

1.先下载对应版本,进入目录

2.编译静态库

找了好久,没有找到对应的方法,不过阅读能力强的,可以./configure help把每个配置选项研究下。我找到一个现成的执行命令,不过被墙了,我就搬运解释下。

先执行脚本

当前目录下就有这个脚本

./autogen.sh

复制代码设置环境变量

build_dir=`pwd`/../libprotobuf/ios

darwin=darwin`uname -r`

protoc=`which protoc`

isysroot=`xcrun --sdk iphoneos --show-sdk-path`

cflags="-Wno-unused-local-typedef -Wno-unused-function -DNDEBUG -g -O0 -pipe -fPIC -fcxx-exceptions"

cxxflags="$cflags -std=c++11 -stdlib=libc++"

复制代码生成输出目录libprotobuf/ios/arch、libprotobuf/ios/lib

mkdir -p $build_dir/arch

mkdir -p $build_dir/lib

复制代码配置arm64

./configure \

--build=x86_64-apple-$darwin \

--host=arm \

--with-protoc=$protoc \

--disable-shared \

--prefix=$build_dir \

--exec-prefix=$build_dir/arch/arm64 \

"CC=clang" \

"CFLAGS=$cflags -miphoneos-version-min=8.0 -arch arm64 -isysroot $isysroot" \

"CXX=clang" \

"CXXFLAGS=$cxxflags -miphoneos-version-min=8.0 -arch arm64 -isysroot $isysroot" \

LDFLAGS="-arch arm64 -miphoneos-version-min=8.0 -stdlib=libc++" \

"LIBS=-lc++ -lc++abi"

复制代码编译arm64

make -j8

make install

复制代码清除配置

make distclean

复制代码配置armv7

./configure \

--build=x86_64-apple-$darwin \

--host=armv7-apple-$darwin \

--with-protoc=$protoc \

--disable-shared \

--prefix=$build_dir \

--exec-prefix=$build_dir/arch/armv7 \

"CC=clang" \

"CFLAGS=$cflags -miphoneos-version-min=8.0 -arch armv7 -isysroot $isysroot" \

"CXX=clang" \

"CXXFLAGS=$cxxflags -miphoneos-version-min=8.0 -arch armv7 -isysroot $isysroot" \

LDFLAGS="-arch armv7 -miphoneos-version-min=8.0 -stdlib=libc++" \

"LIBS=-lc++ -lc++abi"

复制代码编译armv7

make -j8

make install

复制代码合并arm64、armv7

lipo \

$build_dir/arch/arm64/lib/libprotobuf-lite.a \

$build_dir/arch/armv7/lib/libprotobuf-lite.a \

-create \

-output $build_dir/lib/libprotobuf-lite.a

复制代码删除arch临时目录

rm -rf $build_dir/arch

复制代码最后生成的目录

proto

├── cardboard_device.pb.cc

├── cardboard_device.pb.h

└── libprotobuf

└── ios

├── include

│ └── google/*

└── lib

└── libprotobuf-lite.a

复制代码

把lib、include拖到工程中,指定搜索目录就可以使用了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值