在openwrt 17.01上编译最新nginx 1.14.2的笔记
openwrt 17.01源码对应的nginx版本是1.10.2,有些新功能没有,所以需要升级到nginx 1.14.2最新的稳定版
https://github.com/openwrt/packages/tree/master/net/nginx/patches
有几个地方需要修改:
1、修改feeds/packages/net/nginx/patches目录里的几个文件:
增加一个文件:201-ignore-invalid-options.patch
--- a/auto/options
+++ b/auto/options
@@ -391,7 +391,6 @@ $0: warning: the \"--with-sha1-asm\" option is deprecated"
--test-build-solaris-sendfilev) NGX_TEST_BUILD_SOLARIS_SENDFILEV=YES ;;
*)
- echo "$0: error: invalid option \"$option\""
- exit 1
+ echo "$0: error: ignoring invalid option \"$option\""
;;
esac
修改:
102-sizeof_test_fix.patch
--- a/auto/types/sizeof
+++ b/auto/types/sizeof
@@ -25,8 +25,14 @@ $NGX_INCLUDE_UNISTD_H
$NGX_INCLUDE_INTTYPES_H
$NGX_INCLUDE_AUTO_CONFIG_H
+char object_code_block[] = {
+ '\n', 'e', '4', 'V', 'A',
+ '0', 'x', ('0' + sizeof($ngx_type)),
+ 'Y', '3', 'p', 'M', '\n'
+};
+
int main(void) {
- printf("%d", (int) sizeof($ngx_type));
+ printf("dummy use of object_code_block to avoid gc-section: %c", object_code_block[0]);
return 0;
}
@@ -40,7 +46,7 @@ eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&
if [ -x $NGX_AUTOTEST ]; then
- ngx_size=`$NGX_AUTOTEST`
+ ngx_size=`sed -ne 's/^e4VA0x\(.\)Y3pM$/\1/p' < $NGX_AUTOTEST`
echo " $ngx_size bytes"
fi
2、修改feeds/packages/net/nginx/patches-lua-nginx目录里的几个文件:
增加:101-patch-src-ngx_http_lua_headers.c.patch
--- a/lua-nginx/src/ngx_http_lua_headers.c
+++ b/lua-nignx/src/ngx_http_lua_headers.c
@@ -77,6 +77,9 @@
size_t size;
ngx_buf_t *b, *first = NULL;
ngx_int_t i, j;
+#if defined(nginx_version) && nginx_version >= 1011011
+ ngx_chain_t *cl;
+#endif
ngx_connection_t *c;
ngx_http_request_t *r, *mr;
ngx_http_connection_t *hc;
@@ -141,8 +141,15 @@
if (hc->nbusy) {
b = NULL;
+
+#if defined(nginx_version) && nginx_version >= 1011011
+ for (cl = hc->busy; cl; /* void */) {
+ b = cl->buf;
+ cl = cl->next;
+#else
for (i = 0; i < hc->nbusy; i++) {
b = hc->busy[i];
+#endif
dd("busy buf: %d: [%.*s]", (int) i, (int) (b->pos - b->start),
b->start);
@@ -216,8 +217,15 @@
}
if (hc->nbusy) {
+
+#if defined(nginx_version) && nginx_version >= 1011011
+ for (cl = hc->busy; cl; /* void */) {
+ b = cl->buf;
+ cl = cl->next;
+#else
for (i = 0; i < hc->nbusy; i++) {
b = hc->busy[i];
+#endif
if (!found) {
if (b != first) {
3、修改feeds/packages/net/nginx/Makefile文件:
PKG_VERSION:=1.14.2
在openwrt 17.01上编译最新nginx 1.14.2的笔记的更多相关文章
- 编译安装 nginx -1.14.2
编译安装 nginx -1.14.2 1 ) 下载nginx-1.14.2 源码包: wget http://nginx.org/download/nginx-1.14.2.tar.gz 2 ) 编译 ...
- 在Windows上编译最新的CURL,含有zlib,openssl
最近,从网上下载了一个curl库,使用时各种报错,都无法启动,于是干脆就直接自己编译了. 1. 准备工作 a. 下载zlib zlib可以使得HTTP请求支持gzip压缩,其地址如下: 官网:http ...
- 在centos7上编译安装nginx
题前,先放一个有图有真相的博客链接:https://www.cnblogs.com/zhang-shijie/p/5294162.html 虽然别人说的很详细,但还是记录一下 1.VMWare Wor ...
- 在Debian Wheezy 7.3.0上编译安装3.12.14内核
最近需要对Linux的一个内核模块进行调整实验,故决定先在虚拟机中完成编译调试工作,最后再在真实的系统上进行测试.为了防止遗忘,把过程记录于此. 1. 准备系统环境 首先从官网下载最新版的Virtua ...
- 运维实践-最新Nginx二进制构建编译lua-nginx-module动态链接Lua脚本访问Redis数据库读取静态资源隐式展现
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 0x0n 前言 ...
- CentOS 7上重新编译安装nginx
CentOS 7的源所提供的nginx几乎不包含任何扩展模块:为了能够使用一些扩展模块,我们需要从源代码重新编译安装nginx. 目前最新版的源代码是1.6.1.下载解压后先不要急着configure ...
- ubuntu和centos 编译安装nginx及常用命令
转自http://www.cnblogs.com/piscesLoveCc/p/5794926.html 一. ubuntu安装 1. 安装依赖库 安装gcc g++的依赖库 ubuntu平台可以使用 ...
- centos系统编译安装nginx+php环境另加独立mysql教程
以前看过的安装nginx+php环境都带了mysql数据库了,这个是因为很多站长都是nginx+php+mysql都在同一台服务器了,那么今天我们是单独处理了,一个是nginx+php环境,然后mys ...
- Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Mariadb 10.1.20 + Nginx 1.10.2 + PHP 7.1.0 + Laravel 5.3 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...
随机推荐
- svn服务器端—管理员分配权限
1.SVN服务器搭建和使用 下载地址:http://subversion.apache.org/packages.html 滚动到浏览器底部,下载并安装:VisualSVN服务器端和tortoiseS ...
- redis 队列模式
1.插入队列(生产者) private static RedisClient client = new RedisClient("127.0.0.1", 6379, null);c ...
- RocketMQ控制台命令
本文未完成,有空再补充,不小心发布了,抱歉 Rocket版本:4.3.0 这几天在整RocketMQ,可谓是困难重重,其中关于控制台的命令,网上的都是一半一半的, 所以我打算直接用整一个完整的官方的命 ...
- scau 9502 ARDF一个变量的问题
哨兵变量flag不小心没 设置成0..所以一直WA 9502 ARDF 时间限制:1000MS 内存限制:65535K 提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC Des ...
- python基础学习(十一)
22.类 # 类 class # 实例 实体 instance class Student: # 空语句 保持结构的完整性 pass jack = Student() jack.name = &quo ...
- 长乐培训Day2
T1 足球联赛 题目 [题目描述] 巴蜀中学新一季的足球联赛开幕了.足球联赛有n只球队参赛,每赛季,每只球队要与其他球队各赛两场,主客各一场,赢一场得3分,输一场不得分,平局两只队伍各得一分. 英勇无 ...
- C++ 中的 多态性
一 .多态性 1.多态性概述:多态是指同样的消息被不同类型的对象接受时导致不同的行为 2.多态实现:编译时的多态:在编译的过程中确定了同名操作的具体对象. 运行时的多态:在程序运行过程中动态地确定 ...
- 虚拟环境搭建Django项目
下载虚拟环境包 pip install virtualenv 创建虚拟环境 virtualenv env 进入env文件夹 cd env 进入Scripts文件夹 cd Scripts 启动虚拟环 ...
- Python进阶:值传递,引用传递?不存在的,是赋值传递
Python的变量及其赋值 c/c++/c#/java 里面都有值传递,引用传递的概念,在Python中是如何的? 例 a = 1 b = a print(id(a),id(b)) #14072334 ...
- access函数的使用
#include<unistd.h> int access(const char* pathname, int mode); 参数介绍: pathname 是文件的路径名+文件名 mode ...