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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值