【随笔记】NDK 编译开源库 jsoncpp
下载并解压源码
wget https://github.com/open-source-parsers/jsoncpp/archive/refs/tags/1.9.4.tar.gz -O jsoncpp_1.9.4.tar.gz
tar -zxvf jsoncpp_1.9.4.tar.gz
在源码根目录创建 Android.mk 文件:
LOCAL_PATH:= $(call my-dir)
SCAN_FILES_PATH := $(LOCAL_PATH)/src/lib_json
SCAN_FILES_SUFFIX := %.cpp %.c %.cc
SCAN_All_Files := $(foreach src_path,$(SCAN_FILES_PATH), $(shell find "$(src_path)" -type f) )
SCAN_All_Files := $(SCAN_All_Files:$(SCAN_CPP_PATH)/./%=$(SCAN_CPP_PATH)%)
SCAN_SRC_LIST := $(filter $(SCAN_FILES_SUFFIX),$(SCAN_All_Files))
SCAN_SRC_LIST := $(SCAN_SRC_LIST:$(LOCAL_PATH)/%=%)
include $(CLEAR_VARS)
LOCAL_MODULE:= jsoncpp
LOCAL_C_INCLUDES := include
LOCAL_SRC_FILES := $(SCAN_SRC_LIST)
LOCAL_CFLAGS := -fstack-protector-all -fomit-frame-pointer -Depl_LINUX
LOCAL_CPPFLAGS := -std=c++11 -fexceptions
include $(BUILD_SHARED_LIBRARY)
在源码根目录创建 Application.mk文件:
APP_STL := c++_static
APP_ABI := armeabi-v7a
APP_PLATFORM := android-19
使用 ndk_build 编译:
lmx@ubuntu:~/work/OpenSource$ cd jsoncpp_1.9.4
lmx@ubuntu:~/work/OpenSource/jsoncpp-1.9.4$ ndk-build NDK_PROJECT_PATH=$(pwd) NDK_APPLICATION_MK=Application.mk APP_BUILD_SCRIPT=Android.mk
[armeabi-v7a] Compile++ thumb: jsoncpp <= json_writer.cpp
[armeabi-v7a] Compile++ thumb: jsoncpp <= json_reader.cpp
[armeabi-v7a] Compile++ thumb: jsoncpp <= json_value.cpp
[armeabi-v7a] SharedLibrary : libjsoncpp.so
[armeabi-v7a] Install : libjsoncpp.so => libs/armeabi-v7a/libjsoncpp.so
最后不得不说,jsoncpp 比 libjson-c 好用太多了。
【随笔记】NDK 编译开源库 jsoncpp的更多相关文章
- 无法链接glew的解决办法-编译开源库出现: error LNK2001: 无法解析的外部符号
无法链接glew的解决办法-编译开源库出现: error LNK2001: 无法解析的外部符号 参考官方配置指南:http://glew.sourceforge.net/install.html 1. ...
- cocos2dx通过ndk编译c++库
ndk编译c++库,然后通过jni调用实现重要代码封装,是安卓应用中最常用的技术,一方面可以将重要的代码实现隐藏,防止泄漏,也可以提高打包速度. ndk里面的sample文件夹中有很多实用的例子,其中 ...
- ndk 编译 boost 库,支持serialization
Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容.在C+ ...
- 基于开源库jsoncpp的json字符串解析
json(JavaScript Object Notation)是一种轻量级高效数据交换格式.相比于XML,其更加简洁,解析更加方便.在实习期间,我负责的程序模块,多次使用到json进行数据传输.由于 ...
- 10.29 工作笔记 ndk编译C++,提示找不到头文件(ndk-build error: string: No such file or directory)
ndk编译C++.提示找不到头文件(ndk-build error: string: No such file or directory) 被这个问题弄得愁眉苦脸啊.心想为啥一个string都找不到呢 ...
- Win7 + VS2015 + CMake3.6.1-GUI + Makefile 编译开源库
CMake生成Unicode版本VC工程 Just add this line in your top CMakeLists.txt file: add_definitions(-DUNICO ...
- ndk编译protobuf库
ndk_r9编译通过,里面带了自动生成代码的脚本(tool/createPBFile.bat). 下载地址
- 用NDK编译lua库
Android.mk是这样的 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := lua LOCAL_SRC_FILE ...
- 使用javah生成jni 头文件和使用ndk编译so库
1.jni 首先clean Project,在makeProject生成对应的class文件 然后点出命名框,输入命令: cd app/build/intermediates/classes/debu ...
- protobuf使用NDK编译Android的静态库(工作记录)
1.protobuf 编译过程 前提: 确保自己电脑上已经安装了cygwin + ndk, 并且NDK能够编译hello-jni成功 1.1 把protobuf 压缩包解压到protobuf文件夹下 ...
随机推荐
- iphoneApp Fidder设置
使用iphone 打开fidder 按照如上配置 安装完毕 然后访问计算机地址- 比如我的计算机ip地址是 192.168.2.10那么我需要在我的safari浏览器中输入192.168.2.10:8 ...
- Python标准库之 xml.etree.ElementTree
Element类型是一种灵活的容器对象,用于在内存中存储结构化数据. 每个element对象都具有以下属性: 1. tag:string对象,表示数据代表的种类. 2. attrib:dictiona ...
- Vue3实现动态导入Excel表格数据
1. 前言 在开发工作过程中,我们会遇到各种各样的表格数据导入,大部分我们的解决方案:提供一个模板前端进行下载,然后按照这个模板要求进行数据填充,最后上传导入,这是其中一种解决方案.个人认为还有另外 ...
- 数据库json字段类型总结
----------------------------------------=================以下是个人自己总结,可能只有自己看的懂.===================---- ...
- i春秋wanna to see your hat?
打开题目网页发现是个选择帽子的网页,点击超链接进入一个网页让我们输入我们的name然后匹配帽子颜色(其实不管怎么填都是绿色的)这里也有个注册窗口 先查看源码没什么特别发现,再试试抓包吧 在这个界面抓包 ...
- Vue使用axios请求接口返回成功200但是进入到catch中
发生这个问题时查阅了许多资料,没有一个是对得上的.最后发现原来是在请求拦截器中的错误 错误代码如下 // 添加响应拦截器 axios.interceptors.response.use(functio ...
- 【Java SE】Day01 前言、入门程序、常量、变量
回顾一下Java之前学的内容 Day01 前言.入门程序.常量.变量 一.基础知识 莱布尼茨发明二进制,辗转相除与8421位权法互转,1B=1bit=1字节=8位=8byte dos cls清屏dir ...
- OpenAI 推出超神 ChatGPT 注册教程来了
前几天,OpenAI 推出超神 ChatGPT,非常火爆.但是呢,因为不可抗力原因,大部分人无法体验到.这里我分享一下注册的攻略. 准备 首先能能访问 Google(前置条件,不能明确说,懂得都懂) ...
- mac连接mysql出现Access denied for user ‘root‘@‘localhost‘
处理方法:1.关闭mysql的服务,点击最左上的苹果图标在系统偏好设置中,找到mysql,点击,stop 确认关闭后进入终端 输入(cd /usr/local/mysql/bin/)回车 输入(sud ...
- go-carbon 1.5.3 版本发布, 修复已知 bug 和新增俄罗斯语翻译文件
carbon 是一个轻量级.语义化.对开发者友好的golang时间处理库,支持链式调用. 目前已被 awesome-go 收录,如果您觉得不错,请给个star吧 github.com/golang-m ...