我已经修改了一个 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 镜像分支)。