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