【随笔记】NDK 编译开源库 jsoncpp

news/2024/7/10 19:36:08 标签: 开源

下载并解压源码

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 好用太多了。


http://www.niftyadmin.cn/n/830939.html

相关文章

【随笔记】NDK 编译开源库 ffmpeg

一、下载源代码 wget http://ffmpeg.org/releases/ffmpeg-4.4.tar.gz tar -zxvf ffmpeg-4.4.tar.gz 二、编译配置脚本 #! /bin/bashexport PREFIXpwd/build/ export TOOLCHAIN/opt/ndk/android-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64 export PATH"$TOOLCHAIN…

【学习笔记】XR872 GUI Littlevgl 8.0 移植(文件系统)

不得不提 在移植的过程中&#xff0c;发现 LVGL 的文件操作接口并不十分完善&#xff0c;在我看来&#xff0c; LVGL 的文件操作接口&#xff0c;应该更多的是为了 LVGL 内部接口方便读取资源文件而设立的&#xff0c;例如读取图像文件&#xff0c;加载字库文件等等。 遍历目录…

【随笔记】MFC 解决按下 ESC、Enter 键会自动退出的问题

网上大部分人的做法是通过拦截按键消息来屏蔽&#xff0c;实际正确的做法是&#xff1a; 1. 在对话框头文件重载 OnOK()&#xff08;回车会触发&#xff09; 和 OnCancel()&#xff08;ESC会触发&#xff09; 函数。 // XXXXXXXDlg.h class CXXXXXXXDlg : public CDialogEx {…

【分析笔记】SiliconLabs EFR32BG22 Bluetooth Mesh SensorClient 源码分析

硬件环境: SLTB010A(BRD4184A Rev A02 / EFR32BG22C224F512IM40) 软件环境: SimplicityStudio5/gecko_sdk_3.2.3 分析工程: Bluetooth Mesh SensorClient 恶补了 BluetoothMesh 相关知识&#xff0c;首次接触 SiliconLabs 芯片&#xff0c;搜全网&#xff0c;中文资料少的可怜…

[Linux驱动炼成记] 03-IIC外设从机地址

7位从机地址 在7位寻址过程中&#xff0c;从机地址在启动信号后的第一个字节开始传输&#xff0c;该字节的前7位为从机地址&#xff0c;第8位为读写位&#xff0c;其中0表示写&#xff0c;1表示读 7位寻址。I2C总线规范规定&#xff0c;标准模式I2C&#xff0c;从机地址为7位长…

[Linux驱动炼成记] 04-功放TAS5754

背景 整个嵌入式项目由Buildroot构建&#xff0c;现有项目增加音频TAS5754驱动,详细步骤如下 Buildroot 配置 内核文件配置 Kernel -> Defconfig name -> 内核配置文件名称内核DTS配置 Kernel -> Device Tree Source file name -> dts名称内核配置 内核中主要…

【随笔记】SiliconLabs Android aar 库使用

一、导入库文件 1. 拷贝以下两个文件到工程的 libs 目录下 ble_mesh-android_api_high-release.aar ble_mesh-android_api_low-release.aar 2. 修改 app 中的 build.gradle 增加以下内容 implementation com.google.code.gson:gson:2.8.5 implementation(name:ble_mesh-and…

【随笔记】SiliconLabs Android Demo 编译

AndroidStudio&#xff1a;3.5.2 AndroidPhone&#xff1a;XiaoMi5 &#xff08;Android 8.0&#xff09; AndroidDemo&#xff1a;3.1.4-44 AndroidDemo 源码路径&#xff1a;SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2\app\bluetooth\android_application …