1. 工具链
1.1. 下载 ndk
根据 http://developer.android.com/ndk/guides/standalone_toolchain.html#itc 生成对应的
工具链。注:API level 21 以后的工具链中 libc 等带有 symbol version 信息,如不需要该
信息,需使用 level 21 之前的 API。
2. 交叉编译 nginx 及依赖模块
2.1. 依赖第三方库:zlib,pcre,openssl
2.1.1 编译 openssl
/config no-asm shared --prefix=$PREFIX
a)
b) 根据参考资料,修改 Makefile,将工具链改为 arm-linux-androideabi-*,删去涉及到 64
位架构部分
c) make & make install
2.1.2 编译 pcre
a) 根据参考资料设置 configure 选项即可。
b) make & make install
2.1.3 编译 zlib
a) 无需编译,解压即可,编译 nginx 时由 nginx 编译框架来进行编译。
2.2 依赖 module
a) nginx_mod_h264
b) nginx-rtmp-module
2.3 编译
根据参考资料修改对应的文件,需注意
sizeof 测试时应用“gcc –m32”,因为目前的 arm 为 32 位。
a)
b) 缺少 glob 时可从
http://www.gaborcselle.com/open_source/android/ndk/glob/glob.c 和
http://www.gaborcselle.com/open_source/android/ndk/glob/glob.h 获得。需要修
改 issetugid()为 0。
c) 注释掉对 crypto.h 的使用,编译时加上—without-http_auth_basic_module。原因
是工具链不提供可用的 crypto.h。使用其他工具链的 crypto.h 时会有其他问题。
如 crypto.h 的依赖难以解决等。
d) 应加上—with-http_secure_link_module 用于我们的 rtmp 认证。
e) Makefile 中,CFLAGS 删去-Werror,加入相应的 include 路径,LINK 的 flag 中应加
上“-pie -FPIE”编译出 android 要求的 shared object 文件。
f)make & make install
3 参考资料
a) http://blog.csdn.net/zangcf/article/details/22688873
b) http://blog.csdn.net/vblittleboy/article/details/24316303