linux 交叉编译 nginx,Nginx交叉编译 | 程序员网

一、背景本文是《nginx交叉编译》的下半部分。由于本人的CSDN博客已经不再维护,所以以后的内容更新都会发表在这里。给大家带来的不便,敬请见谅。

由于距离我写这篇博客已经过去很久了,编译器版本、gcc版本、linux版本、nginx版本都已经发生了不少变化。但是基本上遇到的问题都是类似的,目前交叉编译遇到的大部分问题都可以在这里找到。如果还有其它问题,请自行google。

第一次使用markdown写博客,加上博客主题的原因,导致排版有点乱,希望大家能够见谅。

本文的上半部分在本人csdn博客。

《nginx交叉编译(上)》

二、nginx 交叉编译 (下)

8、遇到的问题问题内容:没有规则可以创建 “/home/ubuntu/packets/nginx-1.4.7/build/src/core/nginx.o” 需要的目标 “src/core/nginx.h” 。

原因分析:不知道是不是软件的 bug,指定build路径后,build路径里面的源代码是空的

解决办法:把主目录的src文件夹里面的东西,拷贝到build目录(build目录请根据自己实际情况进行确定,参考上面那个问题)

9、遇到的问题

问题内容:

原因分析:

出错的是pcre而不是openssl。原因是编译 pcre 没有指定 `–host’ 参数

解决办法:

10、遇到的问题

问题内容:

原因分析:

– NGX_SYS_NERR未定义,NGX_SYS_NERR正常情况下应定义在objs/ngx_auto_config.h文件中,特别注意,这是一个auto性质的文件,只有在执行了./configure后,才能生成这个文件。宏NGX_SYS_NERR的意义为,在Linux系统中有132个错误编码。

解决办法:

– 找到ngx_auto_config.h这个文件(我的ngx_auto_config.h在build目录,不同的configure参数,这个文件的位置可能不一样)

在文件中添加如下三行:

然后,继续执行make。

11、遇到的问题

问题内容:

原因分析:

解决办法:

12、遇到的问题

问题内容:

原因分析:

原因是编译在nginx执行configure的时候,交叉编译参数没有很好的传到openssl。

解决办法:打开主目录的Makefile,搜索到包含openssl-1.0.1i/.openssl/include/openssl/ssl.h的那一行(可能不同的版本会有一点点区别,搜索openssl,找到最接近那行)

然后,在config的参数那里增加一个,指明交叉编译器所在的路径(请根据实际情况设定)

–cross-compile-prefix=/home/ubuntu/…………/mips-openwrt-linux-

(需要注意的是,最后那里的横杠不能少,如果编译器是mips-openwrt-linux-gcc那就是mips-openwrt-linux-,如果是arm-linux-gcc就是arm-linux-)

修改完makefile之后,会导致make把所有东西都构建一遍,所以之前已经解决了的那几个问题可能会重新出现,需要再解决一回。

13、遇到的问题

问题内容:x86cpuid.s:Assembler messages:

x86cpuid.s:168:Error: Unrecognized opcode `hlt`

原因分析:原因是编译在nginx执行configure的时候,交叉编译参数没有很好的传到openssl。

解决办法:找到上面那个问题添加–cross-compile-prefix的那一行,继续添加一个参数no-asm,禁用汇编代码。

14、遇到的问题

问题内容:

原因分析:`ngx_shm_free`函数未定义

通过查看源码可以发现,`ngx_shm_free’定义在

src/os/unix/ngx_shmem.c文件中,这个函数要正常使用的话必须要求

“NGX_HAVE_MAP_ANON、NGX_HAVE_MAP_DEVZERO、NGX_HAVE_SYSVSHM”这三个宏中有一个被定义。

解决办法:

修改ngx_auto_config.h ,加入这几行:

http://xzh.i3geek.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值