Модуль 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

Затем в коде модуля я делаю #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).

1 ответ

Думаю, я понял.

Мне нужно было добавить что-то вроде этого:

+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
Другие вопросы по тегам