错误:重新定义ap_hack_apr_allocator_create

Apache Web Server源代码编译总是很有趣。

在全新的服务器上第一次运行Apache的编译是非常罕见的。

事实上,它需要很多先决条件,如果其中任何一个缺失或版本不兼容,那么您可能需要花费很多时间来修复这些问题。

我正在使用全新的Linux 6.4服务器安装Apache 2.4.6,并遇到了以下错误。

exports.c:1929:
错误: ‘ap_hack_apr_allocator_create' 的重新定义
exports.c:921: 注意: ‘ap_hack_apr_allocator_create' 的前一个定义在此处
exports.c:1930:
错误: ‘ap_hack_apr_allocator_destroy' 的重新定义
exports.c:922: 注意: ‘ap_hack_apr_allocator_destroy' 的前一个定义在此处
exports.c:1931:
错误: ‘ap_hack_apr_allocator_alloc' 的重新定义
exports.c:923: 注意: ‘ap_hack_apr_allocator_alloc' 的前一个定义在此处
exports.c:1932:
错误: ‘ap_hack_apr_allocator_free' 的重新定义
exports.c:924: 注意: ‘ap_hack_apr_allocator_free' 的前一个定义在此处
exports.c:1933:
错误: ‘ap_hack_apr_allocator_owner_set' 的重新定义
exports.c:925: 注意: ‘ap_hack_apr_allocator_owner_set' 的前一个定义在此处
exports.c:1934:
错误: ‘ap_hack_apr_allocator_owner_get' 的重新定义
exports.c:926: 注意: ‘ap_hack_apr_allocator_owner_get' 的前一个定义在此处
exports.c:1935:
错误: ‘ap_hack_apr_allocator_max_free_set' 的重新定义
exports.c:927: 注意: ‘ap_hack_apr_allocator_max_free_set' 的前一个定义在此处
exports.c:1937:
错误: ‘ap_hack_apr_allocator_mutex_set' 的重新定义
exports.c:929: 注意: ‘ap_hack_apr_allocator_mutex_set' 的前一个定义在此处
exports.c:1938:
错误: ‘ap_hack_apr_allocator_mutex_get' 的重新定义
exports.c:930: 注意: ‘ap_hack_apr_allocator_mutex_get' 的前一个定义在此处
exports.c:1944:
错误: ‘ap_hack_apr_atomic_init' 的重新定义
exports.c:936: 注意: ‘ap_hack_apr_atomic_init' 的前一个定义在此处
exports.c:1945:
错误: ‘ap_hack_apr_atomic_read32' 的重新定义
exports.c:937: 注意: ‘ap_hack_apr_atomic_read32' 的前一个定义在此处
exports.c:1946:
错误: ‘ap_hack_apr_atomic_set32' 的重新定义
exports.c:938: 注意: ‘ap_hack_apr_atomic_set32' 的前一个定义在此处
exports.c:1947:
错误: ‘ap_hack_apr_atomic_add32' 的重新定义
exports.c:939: 注意: ‘ap_hack_apr_atomic_add32' 的前一个定义在此处
exports.c:1948:
错误: ‘ap_hack_apr_atomic_sub32' 的重新定义
exports.c:940: 注意: ‘ap_hack_apr_atomic_sub32' 的前一个定义在此处
exports.c:1949:
错误: ‘ap_hack_apr_atomic_inc32' 的重新定义
exports.c:941: 注意: ‘ap_hack_apr_atomic_inc32' 的前一个定义在此处
exports.c:1950:
错误: ‘ap_hack_apr_atomic_dec32' 的重新定义
exports.c:942: 注意: ‘ap_hack_apr_atomic_dec32' 的前一个定义在此处
exports.c:1951:
错误: ‘ap_hack_apr_atomic_cas32' 的重新定义
exports.c:943: 注意: ‘ap_hack_apr_atomic_cas32' 的前一个定义在此处
exports.c:1952:
错误: ‘ap_hack_apr_atomic_xchg32' 的重新定义
exports.c:944: 注意: ‘ap_hack_apr_atomic_xchg32' 的前一个定义在此处
exports.c:1953:
错误: ‘ap_hack_apr_atomic_casptr' 的重新定义
exports.c:945: 注意: ‘ap_hack_apr_atomic_casptr' 的前一个定义在此处
exports.c:1954:
错误: ‘ap_hack_apr_atomic_xchgptr' 的重新定义
exports.c:946: 注意: ‘ap_hack_apr_atomic_xchgptr' 的前一个定义在此处
exports.c:1960:
错误: ‘ap_hack_apr_dso_load' 的重新定义
exports.c:1085: 注意: ‘ap_hack_apr_dso_load' 的前一个定义在此处
exports.c:1961:
错误: ‘ap_hack_apr_dso_unload' 的重新定义
exports.c:1086: 注意: ‘ap_hack_apr_dso_unload' 的前一个定义在此处
exports.c:1962:
错误: ‘ap_hack_apr_dso_sym' 的重新定义
exports.c:1087: 注意: ‘ap_hack_apr_dso_sym' 的前一个定义在此处
exports.c:1963:
错误: ‘ap_hack_apr_dso_error' 的重新定义
exports.c:1088: 注意: ‘ap_hack_apr_dso_error' 的前一个定义在此处
exports.c:1969:
错误: ‘ap_hack_apr_env_get' 的重新定义
exports.c:1094: 注意: ‘ap_hack_apr_env_get' 的前一个定义在此处
exports.c:1970:
错误: ‘ap_hack_apr_env_set' 的重新定义
exports.c:1095: 注意: ‘ap_hack_apr_env_set' 的前一个定义在此处
exports.c:1971:
错误: ‘ap_hack_apr_env_delete' 的重新定义
exports.c:1096: 注意: ‘ap_hack_apr_env_delete' 的前一个定义在此处
exports.c:1976:
错误: ‘ap_hack_apr_strerror' 的重新定义
exports.c:1101: 注意: ‘ap_hack_apr_strerror' 的前一个定义在此处
export.c:1981:
错误: ‘ap_hack_apr_stat' 的重新定义
exports.c:1106: 注意: ‘ap_hack_apr_stat' 的前一个定义在此处
exports.c:1982:
错误: ‘ap_hack_apr_dir_open' 的重新定义
exports.c:1107: 注意: ‘ap_hack_apr_dir_open' 的前一个定义在此处
exports.c:1983:
错误: ‘ap_hack_apr_dir_close' 的重新定义
exports.c:1108: 注意: ‘ap_hack_apr_dir_close' 的前一个定义在此处

如果你遇到类似的错误,你可以按照我所做的进行修复。

解决方案

在研究了各种参数后,我发现当你的 apr-util 版本低于 1.4.1 时会出现这个问题。

  • 验证你的 apr-util 版本。如果发现版本较低,则必须安装 1.4.1 或更高版本
  • http://mirror.nus.edu.sg/apache/apr/ 下载 apr-util 源代码
  • 解压下载的文件

按照以下步骤编译和安装

./configure 
make 
make install

默认情况下,它将安装在 /usr/local/apr/bin/apu-1-config

现在你可以使用新安装的 apr-util 来编译 apache,应该没有问题。

./configure --with-apr-util=/usr/local/apr/bin/apu-1-config

这对我有帮助,希望对你也有帮助。

类似文章