libuv编译Linux,OS X下 Android NDK 编译 libuv
准备工作
1、安装 NDK 下载对应版本,并添加安装路径至环境变量 (我用的是NDK14 rb,貌似最新的NDK编译有问题)
2、下载libuv 源码,并解压,我下载的版本是v1.11.0 这里提一句,貌似v1.12.0版本生成的Makefile貌似有一行有误,需要修改下,才能编译成功
下载安装gyp
进入解压目录
git clone https://chromium.googlesource.com/external/gyp.git build/gyp
cd build/gyp
pip install setuptools
sudo python setup.py install
通常情况下就安装好了然后回到解压目录下,修改android-configure,很遗憾,README里面官方给出的方案并不能直接运行。编译arm架构的脚本如下
#!/bin/bash
export TOOLCHAIN=$PWD/android-toolchain
mkdir -p $TOOLCHAIN
$1/build/tools/make-standalone-toolchain.sh \
--toolchain=arm-linux-androideabi-4.9 \
--arch=arm \
--install-dir=$TOOLCHAIN \
--platform=android-14 \
--force
export PATH=$TOOLCHAIN/bin:$PATH
export AR=arm-linux-androideabi-ar
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
export LINK=arm-linux-androideabi-g++
export PLATFORM=android
export ARCH_FLAGS="-mthumb"
export ARCH_LINK=
export CPPFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
export CXXFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions "
export CFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
export LDFLAGS=" ${ARCH_LINK} "
if [[ $2 == 'gyp' ]]
then
./gyp_uv.py -Dtarget_arch=arm -DOS=android -f make-android
fi
退出保存以后 运行
source ./android-configure $NDK gyp && make -C out
在out/Debug目录下就会有生成好的 libuv.a
生成arm64-v8a架构的静态库
#!/bin/bash
export TOOLCHAIN=$PWD/android-toolchain
mkdir -p $TOOLCHAIN
$1/build/tools/make-standalone-toolchain.sh \
--toolchain=aarch64-linux-android-4.9 \
--arch=arm64 \
--install-dir=$TOOLCHAIN \
--platform=android-21 \
--force
export PATH=$TOOLCHAIN/bin:$PATH
export AR=aarch64-linux-android-ar
export CC=aarch64-linux-android-gcc
export CXX=aarch64-linux-android-g++
export LINK=aarch64-linux-android-g++
export PLATFORM=android
export ARCH_FLAGS=
export ARCH_LINK=
export CPPFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
export CXXFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions "
export CFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
export LDFLAGS=" ${ARCH_LINK} "
if [[ $2 == 'gyp' ]]
then
./gyp_uv.py -Dtarget_arch=arm64 -DOS=android -f make-android
fi
armv7a的
#!/bin/bash
export TOOLCHAIN=$PWD/android-toolchain
mkdir -p $TOOLCHAIN
$1/build/tools/make-standalone-toolchain.sh \
--toolchain=arm-linux-androideabi-4.9 \
--arch=arm \
--install-dir=$TOOLCHAIN \
--platform=android-14 \
--force
export PATH=$TOOLCHAIN/bin:$PATH
export AR=arm-linux-androideabi-ar
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
export LINK=arm-linux-androideabi-g++
export PLATFORM=android
export ARCH_FLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16"
export ARCH_LINK="-march=armv7-a -Wl,--fix-cortex-a8"
export CPPFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
export CXXFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions "
export CFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 "
export LDFLAGS=" ${ARCH_LINK} "
if [[ $2 == 'gyp' ]]
then
./gyp_uv.py -Dtarget_arch=arm -DOS=android -f make-android
fi
libuv编译Linux,OS X下 Android NDK 编译 libuv相关推荐
- linux编译fdk aac,Ubuntu下利用NDK编译ffmpeg+x264+fdk-aac
由于FFmpeg.x264.Fdk-aac的版本问题,所以编译的时候有很多坑 编译顺序: 首先利用脚本分别编译x264和fdk-aac库,生成头文件(.h)与静态库文件(.a/.la). 将FFmpe ...
- Android NDK编译中在libs\armeabi中加入第三方so库文件的方法
Android NDK编译中在libs\armeabi中加入第三方so库文件的方法 假设要加入库文件的名字为libffmpeg.so文件 1.要在project\jni目录下新建一目录prebuilt ...
- android.mk ndk编译选项优化,Android NDK 编译脚本分析 之一
版权信息:本文为本人原创,欢迎转载,但请著明出处,并保留本版权信息. Android NDK编译脚本编写起来还是是比较简单条理的,然而它的语法和传统的linux GNU Make编译脚本的编写似乎有很 ...
- Windows下用ndk编译ffmpeg
Windows下用ndk编译ffmpeg 第一步:创建一个android工程,然后将ffmpeg整体放到jni下,并创建Android.mk和Application.mk Android.mk: ...
- android jni不适用ndk,Android NDK编译之undefined reference to 'JNI_CreateJavaVM'
利用Android NDK编译动态库,在C文件中调用了两个JNI函数:JNI_GetDefaultJavaVMInitArgs和JNI_CreateJavaVM.编译的时候始终报以下错误: XXX: ...
- Android NDK 编译 三方库记录 及 jni库封装问题
因工作需求, 要将原先的c++库跨平台编译,在Android上运行, 其依赖了几个第三方库, 也需要一起编译, 在此做个记录 所需工具(centos 系统上完成) 1. cmake 3.15.6 2. ...
- Android NDK 编译PjSip 2.6 之 搭建PjSip apk开发环境 (三)
Android NDK 编译PjSip 2.6 之 PjSip编译 (二)中已经把so 和java文件编译出来.可以开始搭建apk的开发环境. 我们导入PjSip的example apk程序,编译生成 ...
- NDK编译php,Android NDK编译常见错误及解决方案
Android NDK编译常见错误及解决方案 Error 1:$ ndk-build/cygdrive/c/andy/abc/obj/local/armeabi-v7a/objs/abc//hello ...
- linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别的解决方法
linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别到总结 1.下载jdk-6u26-linux-i586.bin并复制到在目标文件夹(例如/u ...
最新文章
- fprintf、printf、sprintf、fscanf、scanf、sscanf 格式化输入输出
- redis之 centos 6.7 下安装 redis-3.2.5
- 深入理解 Java 注解
- 【预告】腾讯移动分析 MTA 即刻登陆 2017 GMTC 全球移动技术大会
- Oracle Database 11.2.0.1(静默安装)
- 【 MATLAB 】基本序列运算及其MATLAB的等效表示
- LinkedBlockingQueue 注记
- vue脚手架引入swiper
- 5码默认版块_5个小众的生活学习类的宝藏App
- php计算指数函数,指数函数运算法则公式有哪些
- Python与爬虫有什么关系?
- 机器学习-决策树之分类树python实战(以红酒数据集为例)(二)
- vue input组件设置失焦与聚焦
- 202012798范明霞的博客
- 如何解决wup.exe文件占用cpu资源,彻底删除
- 《云云众声》第90期:久久不见 新年第90期有新精彩!
- cesium里面能不能导入动画_cesium 添加动态 gif 图片
- Pandas数据可视化的备忘录
- python基础语法实验目的_Python基础语法
- 华为数通2022年10月 HCIP-Datacom-H12-821 第一章