2022-11-26 23:32
6 min
오류: ap_hack_apr_allocator_create 재정의
Apache 웹 서버 컴파일 중 발생하는 문제 해결
Apache 웹 서버의 소스 코드를 컴파일하는 과정은 때때로 예상치 못한 난관에 부딪히곤 합니다. 특히, 새로운 서버 환경에서 Apache를 처음으로 실행하려고 할 때, 컴파일 과정이 순조롭게 진행되는 경우는 드뭅니다.
이는 Apache 컴파일에 필요한 수많은 전제 조건들 때문인데, 이 중 하나라도 충족되지 않거나, 버전 호환성 문제가 발생하면, 문제를 해결하는 데 상당한 시간을 소모해야 할 수 있습니다.
최근에 Linux 6.4 운영체제의 새로운 서버에서 Apache 2.4.6 버전을 설치하던 중, 다음과 같은 오류 메시지를 접하게 되었습니다.
exports.c:1929: error: 'ap_hack_apr_allocator_create' 재정의 exports.c:921: note: 'ap_hack_apr_allocator_create'의 이전 정의는 여기에 있음 exports.c:1930: error: 'ap_hack_apr_allocator_destroy' 재정의 exports.c:922: note: 'ap_hack_apr_allocator_destroy'의 이전 정의는 여기에 있음 exports.c:1931: error: 'ap_hack_apr_allocator_alloc' 재정의 exports.c:923: note: 'ap_hack_apr_allocator_alloc'의 이전 정의는 여기에 있음 exports.c:1932: error: 'ap_hack_apr_allocator_free' 재정의 exports.c:924: note: 'ap_hack_apr_allocator_free'의 이전 정의는 여기에 있음 exports.c:1933: error: 'ap_hack_apr_allocator_owner_set' 재정의 exports.c:925: note: 'ap_hack_apr_allocator_owner_set'의 이전 정의는 여기에 있음 exports.c:1934: error: 'ap_hack_apr_allocator_owner_get' 재정의 exports.c:926: note: 'ap_hack_apr_allocator_owner_get'의 이전 정의는 여기에 있음 exports.c:1935: error: 'ap_hack_apr_allocator_max_free_set' 재정의 exports.c:927: note: 'ap_hack_apr_allocator_max_free_set'의 이전 정의는 여기에 있음 exports.c:1937: error: 'ap_hack_apr_allocator_mutex_set' 재정의 exports.c:929: note: 'ap_hack_apr_allocator_mutex_set'의 이전 정의는 여기에 있음 exports.c:1938: error: 'ap_hack_apr_allocator_mutex_get' 재정의 exports.c:930: note: 'ap_hack_apr_allocator_mutex_get'의 이전 정의는 여기에 있음 exports.c:1944: error: 'ap_hack_apr_atomic_init' 재정의 exports.c:936: note: 'ap_hack_apr_atomic_init'의 이전 정의는 여기에 있음 exports.c:1945: error: 'ap_hack_apr_atomic_read32' 재정의 exports.c:937: note: 'ap_hack_apr_atomic_read32'의 이전 정의는 여기에 있음 exports.c:1946: error: 'ap_hack_apr_atomic_set32' 재정의 exports.c:938: note: 'ap_hack_apr_atomic_set32'의 이전 정의는 여기에 있음 exports.c:1947: error: 'ap_hack_apr_atomic_add32' 재정의 exports.c:939: note: 'ap_hack_apr_atomic_add32'의 이전 정의는 여기에 있음 exports.c:1948: error: 'ap_hack_apr_atomic_sub32' 재정의 exports.c:940: note: 'ap_hack_apr_atomic_sub32'의 이전 정의는 여기에 있음 exports.c:1949: error: 'ap_hack_apr_atomic_inc32' 재정의 exports.c:941: note: 'ap_hack_apr_atomic_inc32'의 이전 정의는 여기에 있음 exports.c:1950: error: 'ap_hack_apr_atomic_dec32' 재정의 exports.c:942: note: 'ap_hack_apr_atomic_dec32'의 이전 정의는 여기에 있음 exports.c:1951: error: 'ap_hack_apr_atomic_cas32' 재정의 exports.c:943: note: 'ap_hack_apr_atomic_cas32'의 이전 정의는 여기에 있음 exports.c:1952: error: 'ap_hack_apr_atomic_xchg32' 재정의 exports.c:944: note: 'ap_hack_apr_atomic_xchg32'의 이전 정의는 여기에 있음 exports.c:1953: error: 'ap_hack_apr_atomic_casptr' 재정의 exports.c:945: note: 'ap_hack_apr_atomic_casptr'의 이전 정의는 여기에 있음 exports.c:1954: error: 'ap_hack_apr_atomic_xchgptr' 재정의 exports.c:946: note: 'ap_hack_apr_atomic_xchgptr'의 이전 정의는 여기에 있음 exports.c:1960: error: 'ap_hack_apr_dso_load' 재정의 exports.c:1085: note: 'ap_hack_apr_dso_load'의 이전 정의는 여기에 있음 exports.c:1961: error: 'ap_hack_apr_dso_unload' 재정의 exports.c:1086: note: 'ap_hack_apr_dso_unload'의 이전 정의는 여기에 있음 exports.c:1962: error: 'ap_hack_apr_dso_sym' 재정의 exports.c:1087: note: 'ap_hack_apr_dso_sym'의 이전 정의는 여기에 있음 exports.c:1963: error: 'ap_hack_apr_dso_error' 재정의 exports.c:1088: note: 'ap_hack_apr_dso_error'의 이전 정의는 여기에 있음 exports.c:1969: error: 'ap_hack_apr_env_get' 재정의 exports.c:1094: note: 'ap_hack_apr_env_get'의 이전 정의는 여기에 있음 exports.c:1970: error: 'ap_hack_apr_env_set' 재정의 exports.c:1095: note: 'ap_hack_apr_env_set'의 이전 정의는 여기에 있음 exports.c:1971: error: 'ap_hack_apr_env_delete' 재정의 exports.c:1096: note: 'ap_hack_apr_env_delete'의 이전 정의는 여기에 있음 exports.c:1976: error: 'ap_hack_apr_strerror' 재정의 exports.c:1101: note: 'ap_hack_apr_strerror'의 이전 정의는 여기에 있음 exports.c:1981: error: 'ap_hack_apr_stat' 재정의 exports.c:1106: note: 'ap_hack_apr_stat'의 이전 정의는 여기에 있음 exports.c:1982: error: 'ap_hack_apr_dir_open' 재정의 exports.c:1107: note: 'ap_hack_apr_dir_open'의 이전 정의는 여기에 있음 exports.c:1983: error: 'ap_hack_apr_dir_close' 재정의 exports.c:1108: note: 'ap_hack_apr_dir_close'의 이전 정의는 여기에 있음
만약 위와 유사한 오류 메시지를 접하셨다면, 다음 해결 방법을 통해 문제를 해결할 수 있습니다.
문제 해결 방법
다양한 원인을 분석해 본 결과, 이러한 오류는 apr-util 라이브러리의 버전이 1.4.1보다 낮을 때 주로 발생하는 것으로 확인되었습니다.
- 먼저, 설치된 apr-util의 버전을 확인해 보십시오. 만약 버전이 1.4.1 미만이라면, 1.4.1 이상의 버전으로 업데이트해야 합니다.
- apr-util 소스 코드는 다음 링크에서 다운로드할 수 있습니다: http://mirror.nus.edu.sg/apache/apr/
- 다운로드한 압축 파일을 풀고, 다음 명령어를 순서대로 실행하여 컴파일 및 설치를 진행합니다.
./configure make make install
기본 설정으로는 /usr/local/apr/bin/apu-1-config 경로에 설치됩니다.
이제 새로 설치된 apr-util 라이브러리를 사용하여 Apache를 컴파일하면, 문제없이 컴파일이 완료될 것입니다. Apache 컴파일 시 다음 명령어를 사용하십시오:
./configure --with-apr-util=/usr/local/apr/bin/apu-1-config
이 방법이 저에게는 효과가 있었으며, 여러분에게도 도움이 되기를 바랍니다.
이 글이 유익하셨기를 바라며, 다른 사람들과 이 정보를 공유하는 것은 어떨까요?