Nginx編譯時error: assignment makes pointer from integer without a cast處理

dbasdk發表於2018-12-01

Nginx升級-從nginx-1.8.1到nginx-1.12.2

原來是原始碼編譯安裝的

升級過程中,make時報錯

……

c/http -I src/http/modules \

-o objs/src/http/modules/ngx_http_stub_status_module.o \

src/http/modules/ngx_http_stub_status_module.c

cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g   -I src/core -I src/event -I src/event/modules -I src/os/unix -I /data/pcre-8.37 -I objs -I src/http -I src/http/modules \

-o objs/addon/nginx-sticky-module-1.25/ngx_http_sticky_module.o \

/data/nginx-sticky-module-1.25/ngx_http_sticky_module.c

cc1: warnings being treated as errors

/data/nginx-sticky-module-1.25/ngx_http_sticky_module.c: In function ‘ngx_http_get_sticky_peer’:

/data/nginx-sticky-module-1.25/ngx_http_sticky_module.c:340: error: assignment makes pointer from integer without a cast

make[1]: *** [objs/addon/nginx-sticky-module-1.25/ngx_http_sticky_module.o] Error 1

make[1]: Leaving directory `/data/nginx-1.12.2'

make: *** [build] Error 2

[root@test01 nginx-1.12.2]# 


參考網上資料進行檔案修改後成功解決


第一次修改:

ngx_http_sticky_misc.c 的281行修改如下

digest->len = ngx_sock_ntop(in, digest->data, len, 1);

改後

digest->len = ngx_sock_ntop(in, sizeof(struct sockaddr_in), digest->data, len, 1);


ngx_http_sticky_module.c檔案也進行修改

第6行新增:

#include <nginx.h>


第340行左右修改(iphp->rrp.current = iphp->selected_peer;)為:

if (peer && selected_peer >= 0) {

                 ngx_log_debug(NGX_LOG_DEBUG_HTTP, pc->log, 0, "[sticky/get_sticky_peer] peer found at index %i", selected_peer);

#if defined(nginx_version) && nginx_version >= 1009000

                 iphp->rrp.current = peer;

#else

                 iphp->rrp.current = iphp->selected_peer;

#endif


但是再次編譯又有新的報錯:

rc/http -I src/http/modules \

-o objs/addon/nginx-sticky-module-1.25/ngx_http_sticky_misc.o \

/data/nginx-sticky-module-1.25/ngx_http_sticky_misc.c

/data/nginx-sticky-module-1.25/ngx_http_sticky_misc.c: In function ‘ngx_http_sticky_misc_md5’:

/data/nginx-sticky-module-1.25/ngx_http_sticky_misc.c:152: error: ‘MD5_DIGEST_LENGTH’ undeclared (first use in this function)

/data/nginx-sticky-module-1.25/ngx_http_sticky_misc.c:152: error: (Each undeclared identifier is reported only once

/data/nginx-sticky-module-1.25/ngx_http_sticky_misc.c:152: error: for each function it appears in.)

cc1: warnings being treated as errors

/data/nginx-sticky-module-1.25/ngx_http_sticky_misc.c:152: error: unused variable ‘hash’

/data/nginx-sticky-module-1.25/ngx_http_sticky_misc.c: In function ‘ngx_http_sticky_misc_hmac_md5’:

/data/nginx-sticky-module-1.25/ngx_http_sticky_misc.c:189: error: ‘MD5_DIGEST_LENGTH’ undeclared (first use in this function)

/data/nginx-sticky-module-1.25/ngx_http_sticky_misc.c:190: error: ‘MD5_CBLOCK’ undeclared (first use in this function)

/data/nginx-sticky-module-1.25/ngx_http_sticky_misc.c:190: error: unused variable ‘k’

/data/nginx-sticky-module-1.25/ngx_http_sticky_misc.c:189: error: unused variable ‘hash’

make[1]: *** [objs/addon/nginx-sticky-module-1.25/ngx_http_sticky_misc.o] Error 1

make[1]: Leaving directory `/data/nginx-1.12.2'

make: *** [build] Error 2

[root@test01 nginx-1.12.2]# 


第二次修改:

ngx_http_sticky_misc.c中新增2個模組<openssl/sha.h> 和 <openssl/md5.h>


#include <nginx.h>

#include <ngx_config.h>

#include <ngx_core.h>

#include <ngx_http.h>

#include <ngx_md5.h>

#include <ngx_sha1.h>

#include <openssl/sha.h>

#include <openssl/md5.h>  


#include "ngx_http_sticky_misc.h"


之後再重新編譯就不會出錯了。


參考:

1、  

2、 https://blog.csdn.net/zbc496218/article/details/52515247


後續文章將主要在公眾號“技術進階與實戰”(WXID:HelloException)釋出,歡迎關注

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-2222363/,如需轉載,請註明出處,否則將追究法律責任。

相關文章