最近有需要把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/