Ошибка компиляции mod_proxy с Apache httpd 2.4.33

Я пытаюсь скомпилировать последнюю версию apache http 2.4.33 со следующими параметрами настройки.

./configure --prefix=/usr/local/httpd --enable-ssl --enable-so --with-configured-apr

Конфигурация заканчивается без ошибок, но затем я получил следующую ошибку с make команда:

Building shared: mod_env.la mod_expires.la mod_headers.la mod_unique_id.la mod_setenvif.la mod_version.la mod_remoteip.la
mod_remoteip.c: In function 'remoteip_sockaddr_compat':
mod_remoteip.c:329:5: warning: implicit declaration of function 'apr_sockaddr_is_wildcard' [-Wimplicit-function-declaration]
     if (apr_sockaddr_is_wildcard(addr1) &&
     ^
Building shared: mod_proxy.la mod_proxy_connect.la mod_proxy_ftp.la mod_proxy_http.la mod_proxy_fcgi.la mod_proxy_scgi.la mod_proxy_uwsgi.la mod_proxy_fdpass.la mod_proxy_wstunnel.la mod_proxy_ajp.la mod_proxy_balancer.la mod_proxy_express.la mod_proxy_hcheck.la
mod_proxy.c:2675:1: error: unknown type name 'apr_OFN_ssl_engine_set_t'
 static APR_OPTIONAL_FN_TYPE(ssl_engine_set) *proxy_ssl_engine = NULL;
 ^
mod_proxy.c: In function 'ap_proxy_ssl_engine':
mod_proxy.c:2710:36: error: called object 'proxy_ssl_engine' is not a function or function pointer
         return c ? proxy_ssl_engine(c, per_dir_config, 1, enable) : 1;
                                    ^
mod_proxy.c:2675:46: note: declared here
 static APR_OPTIONAL_FN_TYPE(ssl_engine_set) *proxy_ssl_engine = NULL;
                                              ^
In file included from mod_proxy.h:30:0,
                 from mod_proxy.c:17:
mod_proxy.c: In function 'proxy_post_config':
/usr/local/httpd-2.4.4/include/apr_optional.h:42:36: error: 'apr_OFN_ssl_engine_set_t' undeclared (first use in this function)
 #define APR_OPTIONAL_FN_TYPE(name) apr_OFN_##name##_t
                                    ^
/usr/local/httpd-2.4.4/include/apr_optional.h:85:3: note: in expansion of macro 'APR_OPTIONAL_FN_TYPE'
  (APR_OPTIONAL_FN_TYPE(name) *)apr_dynamic_fn_retrieve(#name)
   ^
mod_proxy.c:2760:24: note: in expansion of macro 'APR_RETRIEVE_OPTIONAL_FN'
     proxy_ssl_engine = APR_RETRIEVE_OPTIONAL_FN(ssl_engine_set);
                        ^
/usr/local/httpd-2.4.4/include/apr_optional.h:42:36: note: each undeclared identifier is reported only once for each function it appears in
 #define APR_OPTIONAL_FN_TYPE(name) apr_OFN_##name##_t
                                    ^
/usr/local/httpd-2.4.4/include/apr_optional.h:85:3: note: in expansion of macro 'APR_OPTIONAL_FN_TYPE'
  (APR_OPTIONAL_FN_TYPE(name) *)apr_dynamic_fn_retrieve(#name)
   ^
mod_proxy.c:2760:24: note: in expansion of macro 'APR_RETRIEVE_OPTIONAL_FN'
     proxy_ssl_engine = APR_RETRIEVE_OPTIONAL_FN(ssl_engine_set);
                        ^
/usr/local/httpd-2.4.4/include/apr_optional.h:85:31: error: expected expression before ')' token
  (APR_OPTIONAL_FN_TYPE(name) *)apr_dynamic_fn_retrieve(#name)
                               ^
mod_proxy.c:2760:24: note: in expansion of macro 'APR_RETRIEVE_OPTIONAL_FN'
     proxy_ssl_engine = APR_RETRIEVE_OPTIONAL_FN(ssl_engine_set);

Машина представляет собой размещенный на AWS экземпляр EC2 со всеми последними пакетами. Предыдущая рабочая версия была 2.4.4.

Не могли бы вы указать, где проблема?

1 ответ

У меня была такая же проблема (платформа AIX, более старая версия httpd 2.4.29, более новая версия 2.4.33), причина в следующем:

Произошло изменение в некоторых заголовках (mod_ssl.h, mod_proxy.h и, возможно, другие), но при компиляции использовались (пытались использовать) старые заголовочные файлы из /usr/local/include/apache2 (это зависит от порядка -I варианты при компиляции).

Этот каталог должен быть удален, но этого недостаточно: вы должны повторить make install процесс apr-1.6.3 а затем make install из apr-util-1.6.1 и, наконец, построить http-2.4.33 из источника.

Примечание: эти три компонента (apr, apr-util, httpd) должны быть скомпилированы с теми же настройками компилятора и теми же параметрами настройки (включая макет).

Изменить: то же самое верно для httpd-2.4.34 и httpd-2.4.35: вы удаляете /usr/local/include/apache2, а затем восстановить apr, apr-util а также httpd

Другие вопросы по тегам