protobuf/android 交叉编译笔记
protobuf 交叉编译笔记
目标是使用 android ndk 的工具链编译出 android armeabi-v7a 可用的 protobuf 库。
交叉编译环境配置
windows 平台
- 下载 NDK x86_64 或者 NDK x86 并解压缩
- 下载 protobuf 源代码。这里以 protobuf 3.4.1 举例。
- 下载并安装最新的 cmake 3.10 x86_64 或者 cmake 3.10 x86。
以上,准备完成。
使用 cmake 生成 makefile
选择一个你喜欢的位置,打开cmd
,执行下述命令。
mkdir build
cd build
cmake -G "MinGW Makefiles" \
-DCMAKE_TOOLCHAIN_FILE=<Your NDK PATH>/build/cmake/android.toolchain.cmake \
-DCMAKE_MAKE_PROGRAM=<Your NDK PATH>/prebuilt/windows-x86_64/bin/make.exe \
-Dprotobuf_BUILD_TESTS=OFF \
<Protobuf source PATH>/cmake
几个关键参数略作解释。
CMAKE_TOOLCHAIN_FILE
,这个变量指定了 cmake 使用的 toolchain 脚本,toolchain脚本会帮助配置交叉编译使用的头文件/库文件路径,配置编译器/链接器等一系列工具。
CMAKE_MAKE_PROGRAM
,这个变量指定了cmake使用的make程序,如果系统的PATH
中没有 make.exe
的话(通常也不会有,除非安装了 MinGW 并且配置了 PATH
环境变量),就需要指定使用的 make.exe
程序。这里使用了 ndk 自带的 prebuilt 版 make.exe
。
protobuf_BUILD_TESTS
,不要编译测试用例,这一选项默认启用,但在交叉编译时会导致奇怪的问题。
-G "MinGW Makefiles"
,指定 cmake 生成 MinGW Makefile
,即一般所说的 Makefile
。
编译
cmake --build . --target libprotobuf
cmake --build . --target libprotobuf-lite
分别编译libprotobuf
和libprotobuf-lite
两个库,这两个库就是我们将会用到的 protobuf
静态库了。
protobuf/android 交叉编译笔记的更多相关文章
- Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)
Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...
- (转)Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(详细教程) .
声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级后的cocos2d-x有了一些变化,目前的博文还没有关于Cocos2d-x 2.2.1最新版搭建Android交 ...
- Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(具体教程)
原文地址:http://blog.csdn.net/sttyytw/article/details/17005263 声明:本教程在參考了下面博文,并经过自己的摸索后实际操作得出,本教程系本人原创,因 ...
- android 应用笔记
android 应用笔记 android 应用笔记 小书匠 Android 综合教程 Android常用技巧 安卓系统架构 安卓源码开发 安卓驱动 Linux内核 安卓应用开发 Java 教程 tic ...
- Android 学习笔记之Volley(七)实现Json数据加载和解析...
学习内容: 1.使用Volley实现异步加载Json数据... Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...
- Android开发笔记:打包数据库
对于数据比较多的控制一般会加入SQLite数据库进行数据存储,在打包时这些数据库是不自动打包到apk中的,如何创建数据库呢 方法1:将创建数据库的sql语句在SQLiteHelper继承类中实现,在第 ...
- Android学习笔记进阶之在图片上涂鸦(能清屏)
Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...
- android学习笔记36——使用原始XML文件
XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
随机推荐
- HDU3844Tour (好题)
题意: 有N个点,M个单向边,现在要你设计N条路线覆盖所有的点,每个点都属于且值属于一个环.(为什么是N条边:和最小生成树为什么有N-1条边是一样的证明). 解析: 每个点都有一个喜欢对象(出度 ...
- Activiti 用户任务关联自定义表单
问题阐述 通常每一个"用户任务"都会对应一个表单,以供用户录入信息.尤其是在"流程定义"拥有多个版本的情形下,明确的指定表单显得极其重要. 一份新版本的&quo ...
- 使用Kotlin开发第一个Android应用
直奔主题 第一步:为AndroidStudio安装Kotlin插件 在线安装步骤:File—>Settings—>Plugins—>Install JetBrains plugin… ...
- JavaScript中的面向对象程序设计
本文内容目录顺序: 1.Object概念讲述: 2.面向对象程序设计特点: 3.JavaScript中类和实例对象的创建: 4.原型概念: 5.原型API: 6.原型对象的具体使用:7.深入理解使用原 ...
- win10 uwp ContentDialog 点确定不关闭
微软的ContentDialog不是一直有,而是UWP新的,可以使用Content放用户控件,使用很好,但是一点不好的是,默认的一点击下面按钮就会退出. 我们有时候需要ContentDialog用户输 ...
- socket__服务端于客户端
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/8/23 15:33 # @Author : Mr_zhang # @Site ...
- PHP 单例模式解析和实战
一.什么是单例模式? 1.含义 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例.它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用. 2. ...
- admin的基础配置
admin自定义配置 一.admin.py 我们知道在models.py文件中创建的数据表,一方面我们可以通过视图函数对其进行增删改查,一方面我们也可以通过admin进行,通常我们是通过admin的前 ...
- Python装饰器,json,pickle
装饰器 定义:本质是函数,装饰其它函数是为了给其添加新功能: 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 实现装饰器知识储备: 1.函数即变量: 2.高阶函数 3.嵌套 ...
- linux安装redis-3.0.7
一.Redis介绍 1.简介 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类 ...