上个月老细又话把产品移植到android上,哭吧。。。又一堆东西要搞了。收到任务,第一个移植的就是nginx,因为我们的软件使用了nginx作为http服务器,并且针对服务写了些插件绑定在nginx上。心想这个android也是linux内核的,应该左个跨平台编译就差不多了。谁知道折腾了一个多星期。
如果大家只是想最快编译一个nginx上android就不用看我的文章。直接在这里andoid-nginx下载这个针对android修改好的编译配置就可以了。想了解我采坑的就继续看下去。
编译nginx for android主要参考了 这个帖子和另外一个帖子。但是结合自己的遇到的情况做了一些调整。虽然编译不是很顺利,一路遇到不少问题。不过通过万能的google解决了。历尽千辛万苦终于编译完成了。
其中一个主要的修改是对 auto/types/sizeof文件进行修改,由于configure会对编译出来的测试程序并运行,测试出int,long等数值的长度。由于修改了编译器,编译出来的文件只能在arm的系统上跑,那么在编译的主机上是不能跑的。帖子的方法是教你写一个固定的值,我觉得不是太好,事实上也的确不太好。于是我把这个测试程序的编译器改成我编译主机(用的是mac osx系统)的gcc(其实是clang)。还有一个问题就是我的系统是64位的。而我的目标的android是32位的。不过好彩gcc(其实是clang编译器)有一个参数可以编译32位的程序,“-m32″
#ngx_test=”$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
ngx_test=”gcc -m32 $CC_TEST_FLAGS $CC_AUX_FLAGS \