错误:重新定义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
这对我有帮助,希望对你也有帮助。