Ошибка компиляции 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