libuv移植到android

编译环境是linux + ndk,你要先添加好NDK路径的环境变量,然后进入libuv目录执行以下两句完成编译。

$ source ./android-configure $NDK gyp

$ make -C out

有可能android-configure里写的toolchain跟你现有的不一样,改一下即可。编译后都是.o文件,有个假的很小的libuv.a请忽略(只是个外壳),要自己将编译好的目标文件打包成静态库:

ar rv libuv.a *.o

以上默认的是arm版本的,要生成x86的,需要使用
$source ./android-configure-x86 $NDK gyp

$ make -C out
这样的话在src/unix/fs.c下约600多行处报错,估计是因为内部宏没定义好,因此随便加个条件宏跳过即可。
#elif !defined(_AIX) &&
(defined(_BSD_SOURCE) || defined(_SVID_SOURCE) || defined(_XOPEN_SOURCE)) && defined(FUCK_YOU)
dst->st_atim.tv_sec = src->st_atim.tv_sec;
dst->st_atim.tv_nsec = src->st_atim.tv_nsec;
dst->st_mtim.tv_sec = src->st_mtim.tv_sec;
dst->st_mtim.tv_nsec = src->st_mtim.tv_nsec;
dst->st_ctim.tv_sec = src->st_ctim.tv_sec;
dst->st_ctim.tv_nsec = src->st_ctim.tv_nsec;

在其他几个测试文件中也有类似的问题,直接不用管,因为我们需要的库部分已经编译完了。

原文地址:https://www.cnblogs.com/guoxiaoqian/p/3945034.html