0

我已经修改了一个 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

然后,在模块代码中,我会#if检查NGX_HAVE_LIBX...类似于:

#if (NGX_HAVE_LIBX)
   libx_init();
#endif

它就像一个魅力......当我运行时,auto/configure我发现库被检测到如下:

checking for libx... found

并且它在链接时编译它不包括-lx作为cc/ld构建最终objs/nginx二进制文件时发送到的标志的一部分。我原以为在检测到该功能后,auto/os/linux它会在创建 Makefile 时自动添加到链接阶段......但显然情况并非如此,所以我知道我遗漏了一些东西......我需要什么额外的步骤怎么办?

这是在 nginx 1.19.2 上(嗯,master从 nginx 镜像分支)。

4

1 回答 1

0

我想我明白了。

我需要添加这样的东西:

+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
于 2020-08-20T00:34:57.910 回答