nginx模块:编译但无法链接新库



我修改了一个nginx模块,使其依赖于一个库。。。。让我们调用我需要libx的库。

我修改了auto/os/linux,这样我就可以检测libx是否存在。。。通过添加以下内容:

+ngx_feature="libx"
+ngx_feature_name="NGX_HAVE_LIBX"
+ngx_feature_run=no
+ngx_feature_incs="#include <libx.h>"
+ngx_feature_path=
+ngx_feature_libs=-lx
+ngx_feature_test="libx_init();"
+. auto/feature

然后,在模块代码中,我对NGX_HAVE_LIBX进行了#if的检查。。。类似于:

#if (NGX_HAVE_LIBX)
libx_init();
#endif

它就像一种魅力。。。。当我运行auto/configure时,我发现库被检测到了类似于的东西

checking for libx... found

并且它在链接时编译BUT,它不包括-lx作为在构建最终objs/nginx二进制文件时发送给cc/ld的标志的一部分。我本以为在auto/os/linux中检测到该功能后,在创建Makefile时,它会自动地添加到链接阶段。。。但显然不是这样,所以我知道我错过了一些东西。。。我还需要做什么步骤才能完成它?

这是在nginx 1.19.2上(好吧,来自nginx镜像的master分支(。

我想我明白了。

我需要添加这样的内容:

+ngx_feature="libx"
+ngx_feature_name="NGX_HAVE_LIBX"
+ngx_feature_run=no
+ngx_feature_incs="#include <libx.h>"
+ngx_feature_path=
+ngx_feature_libs=-lx
+ngx_feature_test="libx_init();"
+. auto/feature
if [ $ngx_found = yes ]; then
CORE_LIBS="$CORE_LIBS -lx"
NGX_LIBDL="-lx"
fi

最新更新