要编译glib-2.28.6,那么首先要的就是有它的源码,源码的下载地址在http://ftp.acc.umu.se/pub/gnome/sources/glib/,要什么版本都有,我这里用的是2.28.6版本(其他版本没有试,推荐该版本)。
解压什么的,我就不再啰嗦了。
这里首先在glib-2.28.6根目录下建立一个文件arm-linux.cache,并写入以下内容:
glib_cv_long_long_format=ll glib_cv_stack_grows=no glib_cv_working_bcopy=no glib_cv_sane_realloc=yes glib_cv_have_strlcpy=no glib_cv_va_val_copy=yes glib_cv_rtldglobal_broken=no glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=yes ac_cv_func_nonposix_getpwuid_r=no ac_cv_func_posix_getgrgid_r=no glib_cv_use_pid_surrogate=no ac_cv_func_printf_unix98=no ac_cv_func_vsnprintf_c99=no ac_cv_path_GLIB_COMPILE_SCHEMAS=yes
然后就可以配置了。
我的配置是:./configure --prefix=/wsh_space/my_install/usr/lib --host=arm-cortex_a9-linux-gnueabi --cache-file=arm-linux.cache CC=arm-cortex_a9-linux-gnueabi-gcc
其中--prefix选项可由自己定义,CC的选项选择自己的arm-linux编译器,我这里的编译器是从Android中来的,版本是4.7.4,如果有朋友编译不过去需要该编译器,可以留言哈。
现在可以直接编译了。
make
make install
如果不出意外,那么就会成功了,但是,往往都会出意外。如果不是我这个编译器,那么编译时可能出现zconf.h找不到的错误(这里是针对比较新的Linux系统,如Ubuntu14.04 64位版本的操作系统,32位的没试过,可能也有),有说缺少zlib1g-dev,实际上安装完后或者系统本身已经是最新了,仍然会报这个错误,实际上改错是路径的问题,新版的操作系统该头文件被放在了/usr/include/x86_64-linux-gnu,这时只需要拷贝到/usr/include/目录下即可。
另外还可能会报/usr/bin/ld:
cannot find -lz这个错误,实际上是缺少libz.*文件,也是zlib1g-dev包里的,可是这里就不能按照上面所示去拷贝了,虽然/usr/lib/x86_64-linux-gnu目录下有该文件,但是拷贝到/usr/lib/目录下编译时会报错C
compiler cannot create executables,也就是格式不正确,我们要的是arm平台的,而这个是x86平台当然不合适了,所以不可用,这时的办法是从我上面的编译器中拷贝过去,或者去找arm版本的。
这个问题解决后编译就没问题了。
最后说明,我的Linux系统为Ubuntu14.04 64位版本。
用我上面说的编译器,更加方便,不会报上面说的两个错误,看来我从Android中拿来的arm-cortex_a9-linux-gnueabi-gcc编译器还挺完整的。有时间打包上来给大家共享。