最近有需要把glib库编译上Android上。网上搜索了一下,发觉有人已经写了详细的编译步骤出来了。
编译可在Android上运行的依赖库(一):glib库
交叉编译Android平台glib库
但是按照其方法还是有不少问题。我也不想在这里说明了。因为我估计这些问题可能和你的编译环境等有关系。每个人的机器环境可能都有小小区别。虽然文章也給了具体编译环境的说明,和编译的软件的版本信息。理论上应该没有太多问题。但是我实质上还是遇到问题。 现在提供一个docker来统一编译环境,这样就可以减少问题的存在。而且还提供了编译脚本。其实我已经在建立docker的时候也顺便把编译的工作做了。节省时间。你只要把
docker pull daozhao/glib-android-build-docker
下来,就可以直接使用了。使用的编译方式与文中有点区别,使用standalone的方式编译。我觉得这样的方式比较方便,特别需要对C++的支持。
编译了glib库及依赖包列表:
1) iconv (1.14) https://www.gnu.org/software/libiconv/
2) gettext (0.19.8) https://www.gnu.org/software/gettext/
3) pcre (8.40) http://www.pcre.org/
4) libffi (3.2.1) https://sourceware.org/libffi/
5) glib (2.44.1) https://developer.gnome.org/glib/stable/
其他一下库的包列表
6) jansson (2.10) http://www.digip.org/jansson/
7) gengetopt (2.22.6) https://www.gnu.org/software/gengetopt/gengetopt.html
8) libsrtp (2.0.0) https://github.com/cisco/libsrtp
9) gmp (6.1.2) https://gmplib.org/
10) nettle (3.1) https://www.lysator.liu.se/~nisse/nettle/
11) gnutls (3.5.13) http://www.gnutls.org/
12) libnice (0.1.14) https://nice.freedesktop.org/wiki/
13) libmicrohttpd (0.9.54) https://www.gnu.org/software/libmicrohttpd/
使用方法
docker run -it daozhao/glib-android-build-docker bash
相关信息:
NDK=/home/data/android-ndk-r13b
SYSROOT=/home/data/standalone_toolchain/sysroot
.a & .so 文件在目录 /home/data/standalone_toolchain/sysroot/usr/lib/
.h文件在目录 /home/data/standalone_toolchain/sysroot/usr/include/
arm-linux-androideab* 文件在目录 /home/data/standalone_toolchain/bin/