对protobuf进行ndk编译 config.h文件修改部分
2016-04-21 15:25
357 查看
ok,废话不多说了,正文开始
首先,Android.mk文件与其它文件的区别之处
LOCAL_CPP_EXTENSION := .cc .cpp
因为protobuf的源文件是*.cc的,利用proto生成的文件也是*.cc的格式,所以需要把*.cc,*.cpp添加到LOCAL_CPP_EXTENSION 里面
接着利用上面博客里面说道的protobuf需要的文件添加到mk文件的LOCAL_SRC_FILES里面,注意路径就行,这点不在叙述
由于源文件里面用到了config.h,而这个文件是在VS工程目录下的,不在src/google/目录里面,所以需要把此文件copy到google目录里面(或者其子目录里面)
接着修改config.h文件,详细情况如下:
最上面的红色区域为,非WIN32环境下需要的头文件和namespace
中间的红色区域注释掉,如果不注释掉的话,ndk编译的时候会报ndk里面的一个D:\android-ndk-r8\sources\cxx-stl\gnu-libstdc++\include\backward\backward_warning.h文件找不到,其实这个文件是有的,具体为啥找不到,我不得而知,而且baidu和google也都没办法找到答案,好几个国外的网站上有这个问题,不过天朝和谐了,没办法查看。
第三个红色区域,为自己添加的宏,非win32环境需要用到pthread,源文件里面就是用这个宏来区别的
最后一点,设置LOCAL_C_INCLUDES的时候,一定要把之前config.h文件所在目录的路径包含进去,否则编译会找不到config.h文件
当所以上面的这些都搞定之后,那就用cgywin去ndk-build吧
我用真机测试过,收发协议正常。童鞋们有任何疑问欢迎留言(网上好难找到关于protobuf的ndk编译过程,上面的博客没有对config.h文件要修改进行说明,所以直接copy下去是不会通过的)。
首先,Android.mk文件与其它文件的区别之处
LOCAL_CPP_EXTENSION := .cc .cpp
因为protobuf的源文件是*.cc的,利用proto生成的文件也是*.cc的格式,所以需要把*.cc,*.cpp添加到LOCAL_CPP_EXTENSION 里面
接着利用上面博客里面说道的protobuf需要的文件添加到mk文件的LOCAL_SRC_FILES里面,注意路径就行,这点不在叙述
由于源文件里面用到了config.h,而这个文件是在VS工程目录下的,不在src/google/目录里面,所以需要把此文件copy到google目录里面(或者其子目录里面)
接着修改config.h文件,详细情况如下:
最上面的红色区域为,非WIN32环境下需要的头文件和namespace
中间的红色区域注释掉,如果不注释掉的话,ndk编译的时候会报ndk里面的一个D:\android-ndk-r8\sources\cxx-stl\gnu-libstdc++\include\backward\backward_warning.h文件找不到,其实这个文件是有的,具体为啥找不到,我不得而知,而且baidu和google也都没办法找到答案,好几个国外的网站上有这个问题,不过天朝和谐了,没办法查看。
第三个红色区域,为自己添加的宏,非win32环境需要用到pthread,源文件里面就是用这个宏来区别的
最后一点,设置LOCAL_C_INCLUDES的时候,一定要把之前config.h文件所在目录的路径包含进去,否则编译会找不到config.h文件
当所以上面的这些都搞定之后,那就用cgywin去ndk-build吧
我用真机测试过,收发协议正常。童鞋们有任何疑问欢迎留言(网上好难找到关于protobuf的ndk编译过程,上面的博客没有对config.h文件要修改进行说明,所以直接copy下去是不会通过的)。
相关文章推荐
- Mysql之查询基础select
- React Native iOS环境搭建
- android:layout_weight的真实含义
- css使一行文字竖向排列
- 浅析Spring中的注解
- 团队作业之三
- SQL语句操作数据
- “Windows 无法安装到这个磁盘。选中的磁盘具有MBR分区表”的问题
- yii2 数据库操作 -转自懒人程序
- 知道这20个正则表达式,能让你少写1,000行代码
- 阿里云 linux CentOS 64bit 安装jdk
- alien rpm deb,ubuntu下安装jdk过程及遇到的问题
- HBASE 常用JAVA API使用指南
- VS2010-win32下cocos2dx控制台打印的方法
- Android全屏模式,沉浸模式。粘性沉浸模式
- CV_IMAGE_ELEM的作用以及用法 转载
- HTML5+CSS3的响应式网页设计:自动适应屏幕宽度 转自:欲思博客
- 常用linux操作history列表
- 排序中的归并排序Java
- 回调和异步