准备工作

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相关推荐

  1. linux编译fdk aac,Ubuntu下利用NDK编译ffmpeg+x264+fdk-aac

    由于FFmpeg.x264.Fdk-aac的版本问题,所以编译的时候有很多坑 编译顺序: 首先利用脚本分别编译x264和fdk-aac库,生成头文件(.h)与静态库文件(.a/.la). 将FFmpe ...

  2. Android NDK编译中在libs\armeabi中加入第三方so库文件的方法

    Android NDK编译中在libs\armeabi中加入第三方so库文件的方法 假设要加入库文件的名字为libffmpeg.so文件 1.要在project\jni目录下新建一目录prebuilt ...

  3. android.mk ndk编译选项优化,Android NDK 编译脚本分析 之一

    版权信息:本文为本人原创,欢迎转载,但请著明出处,并保留本版权信息. Android NDK编译脚本编写起来还是是比较简单条理的,然而它的语法和传统的linux GNU Make编译脚本的编写似乎有很 ...

  4. Windows下用ndk编译ffmpeg

    Windows下用ndk编译ffmpeg   第一步:创建一个android工程,然后将ffmpeg整体放到jni下,并创建Android.mk和Application.mk Android.mk: ...

  5. android jni不适用ndk,Android NDK编译之undefined reference to 'JNI_CreateJavaVM'

    利用Android NDK编译动态库,在C文件中调用了两个JNI函数:JNI_GetDefaultJavaVMInitArgs和JNI_CreateJavaVM.编译的时候始终报以下错误: XXX: ...

  6. Android NDK 编译 三方库记录 及 jni库封装问题

    因工作需求, 要将原先的c++库跨平台编译,在Android上运行, 其依赖了几个第三方库, 也需要一起编译, 在此做个记录 所需工具(centos 系统上完成) 1. cmake 3.15.6 2. ...

  7. Android NDK 编译PjSip 2.6 之 搭建PjSip apk开发环境 (三)

    Android NDK 编译PjSip 2.6 之 PjSip编译 (二)中已经把so 和java文件编译出来.可以开始搭建apk的开发环境. 我们导入PjSip的example apk程序,编译生成 ...

  8. NDK编译php,Android NDK编译常见错误及解决方案

    Android NDK编译常见错误及解决方案 Error 1:$ ndk-build/cygdrive/c/andy/abc/obj/local/armeabi-v7a/objs/abc//hello ...

  9. linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别的解决方法

    linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别到总结 1.下载jdk-6u26-linux-i586.bin并复制到在目标文件夹(例如/u ...

最新文章

  1. fprintf、printf、sprintf、fscanf、scanf、sscanf 格式化输入输出
  2. redis之 centos 6.7 下安装 redis-3.2.5
  3. 深入理解 Java 注解
  4. 【预告】腾讯移动分析 MTA 即刻登陆 2017 GMTC 全球移动技术大会
  5. Oracle Database 11.2.0.1(静默安装)
  6. 【 MATLAB 】基本序列运算及其MATLAB的等效表示
  7. LinkedBlockingQueue 注记
  8. vue脚手架引入swiper
  9. 5码默认版块_5个小众的生活学习类的宝藏App
  10. php计算指数函数,指数函数运算法则公式有哪些
  11. Python与爬虫有什么关系?
  12. 机器学习-决策树之分类树python实战(以红酒数据集为例)(二)
  13. vue input组件设置失焦与聚焦
  14. 202012798范明霞的博客
  15. 如何解决wup.exe文件占用cpu资源,彻底删除
  16. 《云云众声》第90期:久久不见 新年第90期有新精彩!
  17. cesium里面能不能导入动画_cesium 添加动态 gif 图片
  18. Pandas数据可视化的备忘录
  19. python基础语法实验目的_Python基础语法
  20. 华为数通2022年10月 HCIP-Datacom-H12-821 第一章

热门文章

  1. 基于华为云的在线拍卖数据分析
  2. 高等学校毕业生登记表计算机掌握程度,高等学校毕业生登记表自我鉴定三篇
  3. 2017年应届生落户上海流程简介
  4. Springboot+Vue实现富文本发表文章功能
  5. 打印机问题:虚拟机连接打印机、物理机连接打印机
  6. 时空位置大数据AI平台技术实现架构设计
  7. 【笔记】编译Android版的Chrome手册
  8. 光纤信号衰减的原理及分析
  9. 【工大SCIR论文解读】WWW20 关键词生成提升电商会话推荐
  10. 什么是Email Bounced(被退回)