nginx动态库加载出现is not binary compatible问题

Error nginx: [emerg] module "/usr/local/nginx/modules/ngx_http_vhost_traffic_status_module.so" is not binary compatible in /etc/nginx/nginx.conf:6

项目中遇到此问题,原因在于不同的系统中的特性对加载动态库有影响。

Your nginx binary is already installed through package system and you are only trying to build the module, right?

When building, nginx-module-vts seems to have a different signature than the signature of the existing binary.

The signature string looks like 8,4,8,0011111111010111001111111111111111

Looking at the nginx source, even if you specify the --with-compat(#define NGX_COMPAT 1) option, the singature can vary.

In conclusion, you will have to compile the dynamic module with the same configure options as installed nginx binary.

Thanks.

$ grep 'NGX_COMPAT' objs/ngx_auto_config.h
#ifndef NGX_COMPAT
#define NGX_COMPAT 1
$ vi src/core/ngx_module.c
177    if (ngx_strcmp(module->signature, NGX_MODULE_SIGNATURE) != 0) {
178        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
179                        "module \"%V\" is not binary compatible",
180                        file);
181        return NGX_ERROR;
182    }
$ vi src/core/ngx_module.h
21#define NGX_MODULE_SIGNATURE_0                                                \
 22     ngx_value(NGX_PTR_SIZE) ","                                               \
 23     ngx_value(NGX_SIG_ATOMIC_T_SIZE) ","                                      \
 24     ngx_value(NGX_TIME_T_SIZE) ","
 25 
 26 #if (NGX_HAVE_KQUEUE)
 27 #define NGX_MODULE_SIGNATURE_1   "1"
 28 #else
 29 #define NGX_MODULE_SIGNATURE_1   "0"
 30 #endif
 31 
 32 #if (NGX_HAVE_IOCP)
 33 #define NGX_MODULE_SIGNATURE_2   "1"
 34 #else
 35 #define NGX_MODULE_SIGNATURE_2   "0"
 36 #endif
 37 
 38 #if (NGX_HAVE_FILE_AIO || NGX_COMPAT)
 39 #define NGX_MODULE_SIGNATURE_3   "1"
 40 #else
 41 #define NGX_MODULE_SIGNATURE_3   "0"
 42 #endif
 43 
 44 #if (NGX_HAVE_AIO_SENDFILE || NGX_COMPAT)
 45 #define NGX_MODULE_SIGNATURE_4   "1"
 46 #else
 47 #define NGX_MODULE_SIGNATURE_4   "0"
 48 #endif
 49 
 50 #if (NGX_HAVE_EVENTFD)
 51 #define NGX_MODULE_SIGNATURE_5   "1"
 52 #else
 53 #define NGX_MODULE_SIGNATURE_5   "0"
 54 #endif
.
.
200 #define NGX_MODULE_SIGNATURE                                                  \
201     NGX_MODULE_SIGNATURE_0 NGX_MODULE_SIGNATURE_1 NGX_MODULE_SIGNATURE_2      \
202     NGX_MODULE_SIGNATURE_3 NGX_MODULE_SIGNATURE_4 NGX_MODULE_SIGNATURE_5      \
203     NGX_MODULE_SIGNATURE_6 NGX_MODULE_SIGNATURE_7 NGX_MODULE_SIGNATURE_8      \
204     NGX_MODULE_SIGNATURE_9 NGX_MODULE_SIGNATURE_10 NGX_MODULE_SIGNATURE_11    \
205     NGX_MODULE_SIGNATURE_12 NGX_MODULE_SIGNATURE_13 NGX_MODULE_SIGNATURE_14   \
206     NGX_MODULE_SIGNATURE_15 NGX_MODULE_SIGNATURE_16 NGX_MODULE_SIGNATURE_17   \
207     NGX_MODULE_SIGNATURE_18 NGX_MODULE_SIGNATURE_19 NGX_MODULE_SIGNATURE_20   \
208     NGX_MODULE_SIGNATURE_21 NGX_MODULE_SIGNATURE_22 NGX_MODULE_SIGNATURE_23   \
209     NGX_MODULE_SIGNATURE_24 NGX_MODULE_SIGNATURE_25 NGX_MODULE_SIGNATURE_26   \
210     NGX_MODULE_SIGNATURE_27 NGX_MODULE_SIGNATURE_28 NGX_MODULE_SIGNATURE_29   \
211     NGX_MODULE_SIGNATURE_30 NGX_MODULE_SIGNATURE_31 NGX_MODULE_SIGNATURE_32   \
212     NGX_MODULE_SIGNATURE_33 NGX_MODULE_SIGNATURE_34

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值