1、準備安裝程式:
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
expat-2.2.4.tar.bz
httpd-2.4.27.tar.gz
openssl-1.1.0f.tar.gz
pcre-8.41.tar.gz
2、依次解壓縮:
tar -xvf apr-1.6.2.tar.gz
tar -xvf apr-util-1.6.0.tar.gz
tar -xvf expat-2.2.4.tar.bz
tar -xvf httpd-2.4.27.tar.gz
tar -xvf pcre-8.41.tar.gz
3、安裝openSSL
tar -xvf openssl-1.1.0f.tar.gz cd openssl-1.1.0f./config shared zlib-dynamic--prefix=/usr/local/opensslmakemake install
安裝之後如果有曆史版本的OpenSSL,則需要處理一下
mv /usr/bin/openssl/usr/bin/openssl.bakmv /usr/include/openssl /usr/include/openssl.bak
建立so檔案的軟串連,這裡需要注意先找到so檔案的地址才能知道軟連結的地址
比如有的人是
ln -s /usr/lib64/libssl.so.1.1 /usr/local/lib64/libssl.so.1.1 ln -s /usr/lib64/libcrypto.so.1.1 /usr/local/lib64/libcrypto.so.1.1
但是我發現自己伺服器執行失敗,於是尋找so地址
find / -name "libssl.so.1.1"
發現安裝地址有差異:
[root$tgpmsidc39 lib64]# find / -name "libssl.so.1.1"/soft/openssl-1.1.0f/libssl.so.1.1/usr/local/openssl/lib/libssl.so.1.1
那麼很明顯,我們的命令應該修改為:
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
讓so生效,具體原理請Google一下:
echo " /usr/lib64 ">> /etc/ld.so.conf
查看一下路徑是否寫入
[root$tgpmsidc39 lib64]# cat /etc/ld.so.confinclude ld.so.conf.d/*.conf/usr/lib64
寫入了檔案,則使之生效
ldconfig –v
或者ldconfig –v |grep libssl
有的人執行 ldconfig –v ,會報錯,請修改加上絕對路徑:
/sbin/ldconfig -v |grep libssl
如果有1.1版本的so資訊則沒問題
安裝APR
tar -xvzf apr-1.6.2.tar.gzcd apr-1.6.2./configure --prefix=/usr/lcoal/aprmakemake install
解壓後安裝Expat
tar -xvzf expat-2.2.4.tar.gzcd expat-2.2.4./configuremakemake install
安裝apr-util
tar -xvzf apr-util-1.6.0.tar.gzcd apr-util-1.6.0
發現系統報錯:
[root$tgpmsidc39 apr-util-1.6.0]# ./configure checking build system type... x86_64-pc-linux-gnuchecking host system type... x86_64-pc-linux-gnuchecking target system type... x86_64-pc-linux-gnuchecking for a BSD-compatible install... /usr/bin/install -cchecking for working mkdir -p... yesAPR-util Version: 1.6.0checking for chosen layout... apr-utilchecking for gcc... gccchecking whether the C compiler works... yeschecking for C compiler default output file name... a.outchecking for suffix of executables... checking whether we are cross compiling... nochecking for suffix of object files... ochecking whether we are using the GNU C compiler... yeschecking whether gcc accepts -g... yeschecking for gcc option to accept ISO C89... none neededApplying apr-util hints file rules for x86_64-pc-linux-gnuchecking for APR... noconfigure: error: APR could not be located. Please use the --with-apr option.
重新來過:
./configure --with-apr=/usr/local/apr/bin/apr-1-config --with-lib=/usr/local/apr/lib
成功。
make
make install
安裝pcre
tar -xvf pcre-8.41.tar.gz
cd pcre-8.41
這裡安裝需要指定路徑
./configure --prefix=/usr/local/pcremakemake install
安裝apache
tar -xvf httpd-2.4.27.tar.gz cd httpd-2.4.27./configure --prefix=/usr/local/apache2.4.27 --enable-mods-shared=all --with-ssl=/usr/local/openssl --with-apr=/usr/local/apr --with-pcre=/usr/local/pcre --with-expat=/usr/local/expat
make編譯階段報錯如上:
exports.c:1902: 錯誤:‘ap_hack_apr_md4’ 重定義 exports.c:1080: 錯誤:‘ap_hack_apr_md4’ 的上一個定義在此 exports.c:1907: 錯誤:‘ap_hack_apr_md5_init’ 重定義 exports.c:1085: 錯誤:‘ap_hack_apr_md5_init’ 的上一個定義在此 exports.c:1908: 錯誤:‘ap_hack_apr_md5_set_xlate’ 重定義 exports.c:1086: 錯誤:‘ap_hack_apr_md5_set_xlate’ 的上一個定義在此 exports.c:1909: 錯誤:‘ap_hack_apr_md5_update’ 重定義 exports.c:1087: 錯誤:‘ap_hack_apr_md5_update’ 的上一個定義在此 exports.c:1910: 錯誤:‘ap_hack_apr_md5_final’ 重定義 exports.c:1088: 錯誤:‘ap_hack_apr_md5_final’ 的上一個定義在此 exports.c:1911: 錯誤:‘ap_hack_apr_md5’ 重定義 exports.c:1089: 錯誤:‘ap_hack_apr_md5’ 的上一個定義在此 exports.c:1912: 錯誤:‘ap_hack_apr_md5_encode’ 重定義 exports.c:1090: 錯誤:‘ap_hack_apr_md5_encode’ 的上一個定義在此 exports.c:1913: 錯誤:‘ap_hack_apr_password_validate’ 重定義 exports.c:1091: 錯誤:‘ap_hack_apr_password_validate’ 的上一個定義在此 exports.c:1918: 錯誤:‘ap_hack_apr_memcache_hash’ 重定義 exports.c:1096: 錯誤:‘ap_hack_apr_memcache_hash’ 的上一個定義在此 exports.c:1919: 錯誤:‘ap_hack_apr_memcache_hash_crc32’ 重定義 exports.c:1097: 錯誤:‘ap_hack_apr_memcache_hash_crc32’ 的上一個定義在此 exports.c:1920: 錯誤:‘ap_hack_apr_memcache_hash_default’ 重定義 exports.c:1098: 錯誤:‘ap_hack_apr_memcache_hash_default’ 的上一個定義在此 exports.c:1921: 錯誤:‘ap_hack_apr_memcache_find_server_hash’ 重定義 exports.c:1099: 錯誤:‘ap_hack_apr_memcache_find_server_hash’ 的上一個定義在此 exports.c:1922: 錯誤:‘ap_hack_apr_memcache_add_server’ 重定義 exports.c:1100: 錯誤:‘ap_hack_apr_memcache_add_server’ 的上一個定義在此 exports.c:1923: 錯誤:‘ap_hack_apr_memcache_find_server’ 重定義 exports.c:1101: 錯誤:‘ap_hack_apr_memcache_find_server’ 的上一個定義在此 exports.c:1924: 錯誤:‘ap_hack_apr_memcache_enable_server’ 重定義 exports.c:1102: 錯誤:‘ap_hack_apr_memcache_enable_server’ 的上一個定義在此 exports.c:1925: 錯誤:‘ap_hack_apr_memcache_disable_server’ 重定義 exports.c:1103: 錯誤:‘ap_hack_apr_memcache_disable_server’ 的上一個定義在此 exports.c:1926: 錯誤:‘ap_hack_apr_memcache_server_create’ 重定義 exports.c:1104: 錯誤:‘ap_hack_apr_memcache_server_create’ 的上一個定義在此 exports.c:1927: 錯誤:‘ap_hack_apr_memcache_create’ 重定義 exports.c:1105: 錯誤:‘ap_hack_apr_memcache_create’ 的上一個定義在此 exports.c:1928: 錯誤:‘ap_hack_apr_memcache_getp’ 重定義 exports.c:1106: 錯誤:‘ap_hack_apr_memcache_getp’ 的上一個定義在此 exports.c:1929: 錯誤:‘ap_hack_apr_memcache_add_multget_key’ 重定義 exports.c:1107: 錯誤:‘ap_hack_apr_memcache_add_multget_key’ 的上一個定義在此 exports.c:1930: 錯誤:‘ap_hack_apr_memcache_multgetp’ 重定義 exports.c:1108: 錯誤:‘ap_hack_apr_memcache_multgetp’ 的上一個定義在此 exports.c:1931: 錯誤:‘ap_hack_apr_memcache_set’ 重定義 exports.c:1109: 錯誤:‘ap_hack_apr_memcache_set’ 的上一個定義在此 exports.c:1932: 錯誤:‘ap_hack_apr_memcache_add’ 重定義 exports.c:1110: 錯誤:‘ap_hack_apr_memcache_add’ 的上一個定義在此 exports.c:1933: 錯誤:‘ap_hack_apr_memcache_replace’ 重定義 exports.c:1111: 錯誤:‘ap_hack_apr_memcache_replace’ 的上一個定義在此 exports.c:1934: 錯誤:‘ap_hack_apr_memcache_delete’ 重定義 exports.c:1112: 錯誤:‘ap_hack_apr_memcache_delete’ 的上一個定義在此 exports.c:1935: 錯誤:‘ap_hack_apr_memcache_incr’ 重定義 exports.c:1113: 錯誤:‘ap_hack_apr_memcache_incr’ 的上一個定義在此 exports.c:1936: 錯誤:‘ap_hack_apr_memcache_decr’ 重定義 exports.c:1114: 錯誤:‘ap_hack_apr_memcache_decr’ 的上一個定義在此 exports.c:1937: 錯誤:‘ap_hack_apr_memcache_version’ 重定義 exports.c:1115: 錯誤:‘ap_hack_apr_memcache_version’ 的上一個定義在此 exports.c:1938: 錯誤:‘ap_hack_apr_memcache_stats’ 重定義 exports.c:1116: 錯誤:‘ap_hack_apr_memcache_stats’ 的上一個定義在此 exports.c:1943: 錯誤:‘ap_hack_apr_dynamic_fn_register’ 重定義 exports.c:1179: 錯誤:‘ap_hack_apr_dynamic_fn_register’ 的上一個定義在此 exports.c:1944: 錯誤:‘ap_hack_apr_dynamic_fn_retrieve’ 重定義 exports.c:1180: 錯誤:‘ap_hack_apr_dynamic_fn_retrieve’ 的上一個定義在此 exports.c:1949: 錯誤:‘ap_hack_apr_optional_hook_add’ 重定義 exports.c:1185: 錯誤:‘ap_hack_apr_optional_hook_add’ 的上一個定義在此 exports.c:1950: 錯誤:‘ap_hack_apr_optional_hook_get’ 重定義 exports.c:1186: 錯誤:‘ap_hack_apr_optional_hook_get’ 的上一個定義在此 exports.c:1956: 錯誤:‘ap_hack_apr_queue_create’ 重定義 exports.c:1323: 錯誤:‘ap_hack_apr_queue_create’ 的上一個定義在此 exports.c:1957: 錯誤:‘ap_hack_apr_queue_push’ 重定義 exports.c:1324: 錯誤:‘ap_hack_apr_queue_push’ 的上一個定義在此 exports.c:1958: 錯誤:‘ap_hack_apr_queue_pop’ 重定義 exports.c:1325: 錯誤:‘ap_hack_apr_queue_pop’ 的上一個定義在此 exports.c:1959: 錯誤:‘ap_hack_apr_queue_trypush’ 重定義 exports.c:1326: 錯誤:‘ap_hack_apr_queue_trypush’ 的上一個定義在此 exports.c:1960: 錯誤:‘ap_hack_apr_queue_trypop’ 重定義 exports.c:1327: 錯誤:‘ap_hack_apr_queue_trypop’ 的上一個定義在此 exports.c:1961: 錯誤:‘ap_hack_apr_queue_size’ 重定義 exports.c:1328: 錯誤:‘ap_hack_apr_queue_size’ 的上一個定義在此 exports.c:1962: 錯誤:‘ap_hack_apr_queue_interrupt_all’ 重定義 exports.c:1329: 錯誤:‘ap_hack_apr_queue_interrupt_all’ 的上一個定義在此 exports.c:1963: 錯誤:‘ap_hack_apr_queue_term’ 重定義 exports.c:1330: 錯誤:‘ap_hack_apr_queue_term’ 的上一個定義在此 exports.c:1970: 錯誤:‘ap_hack_apr_reslist_create’ 重定義 exports.c:1351: 錯誤:‘ap_hack_apr_reslist_create’ 的上一個定義在此 exports.c:1971: 錯誤:‘ap_hack_apr_reslist_destroy’ 重定義 exports.c:1352: 錯誤:‘ap_hack_apr_reslist_destroy’ 的上一個定義在此 exports.c:1972: 錯誤:‘ap_hack_apr_reslist_acquire’ 重定義 exports.c:1353: 錯誤:‘ap_hack_apr_reslist_acquire’ 的上一個定義在此 exports.c:1973: 錯誤:‘ap_hack_apr_reslist_release’ 重定義 exports.c:1354: 錯誤:‘ap_hack_apr_reslist_release’ 的上一個定義在此 exports.c:1974: 錯誤:‘ap_hack_apr_reslist_timeout_set’ 重定義 exports.c:1355: 錯誤:‘ap_hack_apr_reslist_timeout_set’ 的上一個定義在此 exports.c:1975: 錯誤:‘ap_hack_apr_reslist_acquired_count’ 重定義 exports.c:1356: 錯誤:‘ap_hack_apr_reslist_acquired_count’ 的上一個定義在此 exports.c:1976: 錯誤:‘ap_hack_apr_reslist_invalidate’ 重定義 exports.c:1357: 錯誤:‘ap_hack_apr_reslist_invalidate’ 的上一個定義在此 exports.c:1982: 錯誤:‘ap_hack_apr_rmm_init’ 重定義 exports.c:1363: 錯誤:‘ap_hack_apr_rmm_init’ 的上一個定義在此 exports.c:1983: 錯誤:‘ap_hack_apr_rmm_destroy’ 重定義 exports.c:1364: 錯誤:‘ap_hack_apr_rmm_destroy’ 的上一個定義在此 exports.c:1984: 錯誤:‘ap_hack_apr_rmm_attach’ 重定義 exports.c:1365: 錯誤:‘ap_hack_apr_rmm_attach’ 的上一個定義在此 exports.c:1985: 錯誤:‘ap_hack_apr_rmm_detach’ 重定義 exports.c:1366: 錯誤:‘ap_hack_apr_rmm_detach’ 的上一個定義在此 exports.c:1986: 錯誤:‘ap_hack_apr_rmm_malloc’ 重定義 exports.c:1367: 錯誤:‘ap_hack_apr_rmm_malloc’ 的上一個定義在此 exports.c:1987: 錯誤:‘ap_hack_apr_rmm_realloc’ 重定義 exports.c:1368: 錯誤:‘ap_hack_apr_rmm_realloc’ 的上一個定義在此 exports.c:1988: 錯誤:‘ap_hack_apr_rmm_calloc’ 重定義 exports.c:1369: 錯誤:‘ap_hack_apr_rmm_calloc’ 的上一個定義在此 exports.c:1989: 錯誤:‘ap_hack_apr_rmm_free’ 重定義 exports.c:1370: 錯誤:‘ap_hack_apr_rmm_free’ 的上一個定義在此 exports.c:1990: 錯誤:‘ap_hack_apr_rmm_addr_get’ 重定義 exports.c:1371: 錯誤:‘ap_hack_apr_rmm_addr_get’ 的上一個定義在此 exports.c:1991: 錯誤:‘ap_hack_apr_rmm_offset_get’ 重定義 exports.c:1372: 錯誤:‘ap_hack_apr_rmm_offset_get’ 的上一個定義在此 exports.c:1992: 錯誤:‘ap_hack_apr_rmm_overhead_get’ 重定義 exports.c:1373: 錯誤:‘ap_hack_apr_rmm_overhead_get’ 的上一個定義在此 exports.c:1997: 錯誤:‘ap_hack_apr_sdbm_open’ 重定義 exports.c:1378: 錯誤:‘ap_hack_apr_sdbm_open’ 的上一個定義在此 exports.c:1998: 錯誤:‘ap_hack_apr_sdbm_close’ 重定義 exports.c:1379: 錯誤:‘ap_hack_apr_sdbm_close’ 的上一個定義在此 exports.c:1999: 錯誤:‘ap_hack_apr_sdbm_lock’ 重定義 exports.c:1380: 錯誤:‘ap_hack_apr_sdbm_lock’ 的上一個定義在此 exports.c:2000: 錯誤:‘ap_hack_apr_sdbm_unlock’ 重定義 exports.c:1381: 錯誤:‘ap_hack_apr_sdbm_unlock’ 的上一個定義在此 exports.c:2001: 錯誤:‘ap_hack_apr_sdbm_fetch’ 重定義 exports.c:1382: 錯誤:‘ap_hack_apr_sdbm_fetch’ 的上一個定義在此 exports.c:2002: 錯誤:‘ap_hack_apr_sdbm_store’ 重定義 exports.c:1383: 錯誤:‘ap_hack_apr_sdbm_store’ 的上一個定義在此 exports.c:2003: 錯誤:‘ap_hack_apr_sdbm_delete’ 重定義 exports.c:1384: 錯誤:‘ap_hack_apr_sdbm_delete’ 的上一個定義在此 exports.c:2004: 錯誤:‘ap_hack_apr_sdbm_firstkey’ 重定義 exports.c:1385: 錯誤:‘ap_hack_apr_sdbm_firstkey’ 的上一個定義在此 exports.c:2005: 錯誤:‘ap_hack_apr_sdbm_nextkey’ 重定義 exports.c:1386: 錯誤:‘ap_hack_apr_sdbm_nextkey’ 的上一個定義在此 exports.c:2006: 錯誤:‘ap_hack_apr_sdbm_rdonly’ 重定義 exports.c:1387: 錯誤:‘ap_hack_apr_sdbm_rdonly’ 的上一個定義在此 exports.c:2011: 錯誤:‘ap_hack_apr_sha1_base64’ 重定義 exports.c:1392: 錯誤:‘ap_hack_apr_sha1_base64’ 的上一個定義在此 exports.c:2012: 錯誤:‘ap_hack_apr_sha1_init’ 重定義 exports.c:1393: 錯誤:‘ap_hack_apr_sha1_init’ 的上一個定義在此 exports.c:2013: 錯誤:‘ap_hack_apr_sha1_update’ 重定義 exports.c:1394: 錯誤:‘ap_hack_apr_sha1_update’ 的上一個定義在此 exports.c:2014: 錯誤:‘ap_hack_apr_sha1_update_binary’ 重定義 exports.c:1395: 錯誤:‘ap_hack_apr_sha1_update_binary’ 的上一個定義在此 exports.c:2015: 錯誤:‘ap_hack_apr_sha1_final’ 重定義 exports.c:1396: 錯誤:‘ap_hack_apr_sha1_final’ 的上一個定義在此 exports.c:2024: 錯誤:‘ap_hack_apr_strmatch_precompile’ 重定義 exports.c:1455: 錯誤:‘ap_hack_apr_strmatch_precompile’ 的上一個定義在此 exports.c:2030: 錯誤:‘ap_hack_apr_thread_pool_create’ 重定義 exports.c:1519: 錯誤:‘ap_hack_apr_thread_pool_create’ 的上一個定義在此 exports.c:2031: 錯誤:‘ap_hack_apr_thread_pool_destroy’ 重定義 exports.c:1520: 錯誤:‘ap_hack_apr_thread_pool_destroy’ 的上一個定義在此 exports.c:2032: 錯誤:‘ap_hack_apr_thread_pool_push’ 重定義 exports.c:1521: 錯誤:‘ap_hack_apr_thread_pool_push’ 的上一個定義在此 exports.c:2033: 錯誤:‘ap_hack_apr_thread_pool_schedule’ 重定義 exports.c:1522: 錯誤:‘ap_hack_apr_thread_pool_schedule’ 的上一個定義在此 exports.c:2034: 錯誤:‘ap_hack_apr_thread_pool_top’ 重定義 exports.c:1523: 錯誤:‘ap_hack_apr_thread_pool_top’ 的上一個定義在此 exports.c:2035: 錯誤:‘ap_hack_apr_thread_pool_tasks_cancel’ 重定義 exports.c:1524: 錯誤:‘ap_hack_apr_thread_pool_tasks_cancel’ 的上一個定義在此 exports.c:2036: 錯誤:‘ap_hack_apr_thread_pool_tasks_count’ 重定義 exports.c:1525: 錯誤:‘ap_hack_apr_thread_pool_tasks_count’ 的上一個定義在此 exports.c:2037: 錯誤:‘ap_hack_apr_thread_pool_scheduled_tasks_count’ 重定義 exports.c:1526: 錯誤:‘ap_hack_apr_thread_pool_scheduled_tasks_count’ 的上一個定義在此 exports.c:2038: 錯誤:‘ap_hack_apr_thread_pool_threads_count’ 重定義 exports.c:1527: 錯誤:‘ap_hack_apr_thread_pool_threads_count’ 的上一個定義在此 exports.c:2039: 錯誤:‘ap_hack_apr_thread_pool_busy_count’ 重定義 exports.c:1528: 錯誤:‘ap_hack_apr_thread_pool_busy_count’ 的上一個定義在此 exports.c:2040: 錯誤:‘ap_hack_apr_thread_pool_idle_count’ 重定義 exports.c:1529: 錯誤:‘ap_hack_apr_thread_pool_idle_count’ 的上一個定義在此 exports.c:2041: 錯誤:‘ap_hack_apr_thread_pool_idle_max_set’ 重定義 exports.c:1530: 錯誤:‘ap_hack_apr_thread_pool_idle_max_set’ 的上一個定義在此 exports.c:2042: 錯誤:‘ap_hack_apr_thread_pool_idle_max_get’ 重定義 exports.c:1531: 錯誤:‘ap_hack_apr_thread_pool_idle_max_get’ 的上一個定義在此 exports.c:2043: 錯誤:‘ap_hack_apr_thread_pool_thread_max_set’ 重定義 exports.c:1532: 錯誤:‘ap_hack_apr_thread_pool_thread_max_set’ 的上一個定義在此 exports.c:2044: 錯誤:‘ap_hack_apr_thread_pool_thread_max_get’ 重定義 exports.c:1533: 錯誤:‘ap_hack_apr_thread_pool_thread_max_get’ 的上一個定義在此 exports.c:2045: 錯誤:‘ap_hack_apr_thread_pool_threshold_set’ 重定義 exports.c:1534: 錯誤:‘ap_hack_apr_thread_pool_threshold_set’ 的上一個定義在此 exports.c:2046: 錯誤:‘ap_hack_apr_thread_pool_threshold_get’ 重定義 exports.c:1535: 錯誤:‘ap_hack_apr_thread_pool_threshold_get’ 的上一個定義在此 exports.c:2047: 錯誤:‘ap_hack_apr_thread_pool_task_owner_get’ 重定義 exports.c:1536: 錯誤:‘ap_hack_apr_thread_pool_task_owner_get’ 的上一個定義在此 exports.c:2053: 錯誤:‘ap_hack_apr_uri_port_of_scheme’ 重定義 exports.c:1635: 錯誤:‘ap_hack_apr_uri_port_of_scheme’ 的上一個定義在此 exports.c:2054: 錯誤:‘ap_hack_apr_uri_unparse’ 重定義 exports.c:1636: 錯誤:‘ap_hack_apr_uri_unparse’ 的上一個定義在此 exports.c:2055: 錯誤:‘ap_hack_apr_uri_parse’ 重定義 exports.c:1637: 錯誤:‘ap_hack_apr_uri_parse’ 的上一個定義在此 exports.c:2056: 錯誤:‘ap_hack_apr_uri_parse_hostinfo’ 重定義 exports.c:1638: 錯誤:‘ap_hack_apr_uri_parse_hostinfo’ 的上一個定義在此 exports.c:2061: 錯誤:‘ap_hack_apr_uuid_get’ 重定義 exports.c:1663: 錯誤:‘ap_hack_apr_uuid_get’ 的上一個定義在此 exports.c:2062: 錯誤:‘ap_hack_apr_uuid_format’ 重定義 exports.c:1664: 錯誤:‘ap_hack_apr_uuid_format’ 的上一個定義在此 exports.c:2063: 錯誤:‘ap_hack_apr_uuid_parse’ 重定義 exports.c:1665: 錯誤:‘ap_hack_apr_uuid_parse’ 的上一個定義在此 exports.c:2068: 錯誤:‘ap_hack_apr_xlate_open’ 重定義 exports.c:1678: 錯誤:‘ap_hack_apr_xlate_open’ 的上一個定義在此 exports.c:2069: 錯誤:‘ap_hack_apr_xlate_sb_get’ 重定義 exports.c:1679: 錯誤:‘ap_hack_apr_xlate_sb_get’ 的上一個定義在此 exports.c:2070: 錯誤:‘ap_hack_apr_xlate_conv_buffer’ 重定義 exports.c:1680: 錯誤:‘ap_hack_apr_xlate_conv_buffer’ 的上一個定義在此 exports.c:2074: 錯誤:‘ap_hack_apr_xlate_conv_byte’ 重定義 exports.c:1684: 錯誤:‘ap_hack_apr_xlate_conv_byte’ 的上一個定義在此 exports.c:2075: 錯誤:‘ap_hack_apr_xlate_close’ 重定義 exports.c:1685: 錯誤:‘ap_hack_apr_xlate_close’ 的上一個定義在此 exports.c:2080: 錯誤:‘ap_hack_apr_text_append’ 重定義 exports.c:1690: 錯誤:‘ap_hack_apr_text_append’ 的上一個定義在此 exports.c:2081: 錯誤:‘ap_hack_apr_xml_parser_create’ 重定義 exports.c:1691: 錯誤:‘ap_hack_apr_xml_parser_create’ 的上一個定義在此 exports.c:2082: 錯誤:‘ap_hack_apr_xml_parse_file’ 重定義 exports.c:1692: 錯誤:‘ap_hack_apr_xml_parse_file’ 的上一個定義在此 exports.c:2083: 錯誤:‘ap_hack_apr_xml_parser_feed’ 重定義 exports.c:1693: 錯誤:‘ap_hack_apr_xml_parser_feed’ 的上一個定義在此 exports.c:2084: 錯誤:‘ap_hack_apr_xml_parser_done’ 重定義 exports.c:1694: 錯誤:‘ap_hack_apr_xml_parser_done’ 的上一個定義在此 exports.c:2085: 錯誤:‘ap_hack_apr_xml_parser_geterror’ 重定義 exports.c:1695: 錯誤:‘ap_hack_apr_xml_parser_geterror’ 的上一個定義在此 exports.c:2086: 錯誤:‘ap_hack_apr_xml_to_text’ 重定義 exports.c:1696: 錯誤:‘ap_hack_apr_xml_to_text’ 的上一個定義在此 exports.c:2087: 錯誤:‘ap_hack_apr_xml_empty_elem’ 重定義 exports.c:1697: 錯誤:‘ap_hack_apr_xml_empty_elem’ 的上一個定義在此 exports.c:2088: 錯誤:‘ap_hack_apr_xml_quote_string’ 重定義 exports.c:1698: 錯誤:‘ap_hack_apr_xml_quote_string’ 的上一個定義在此 exports.c:2089: 錯誤:‘ap_hack_apr_xml_quote_elem’ 重定義 exports.c:1699: 錯誤:‘ap_hack_apr_xml_quote_elem’ 的上一個定義在此 exports.c:2090: 錯誤:‘ap_hack_apr_xml_insert_uri’ 重定義 exports.c:1700: 錯誤:‘ap_hack_apr_xml_insert_uri’ 的上一個定義在此 exports.c:2099: 錯誤:‘ap_hack_apu_version’ 重定義 exports.c:1709: 錯誤:‘ap_hack_apu_version’ 的上一個定義在此 exports.c:2100: 錯誤:‘ap_hack_apu_version_string’ 重定義 exports.c:1710: 錯誤:‘ap_hack_apu_version_string’ 的上一個定義在此 make[2]: *** [exports.lo] 錯誤 1 make[2]: Leaving directory `/abc/setup/httpd-2.2.17/server' make[1]: *** [all-recursive] 錯誤 1 make[1]: Leaving directory `/abc/setup/httpd-2.2.17/server' make: *** [all-recursive] 錯誤 1
解決步驟如下:
./configure --prefix=/usr/local/apache2.4 --enable-mods-shared=all --with-ssl=/usr/local/openssl --with-apr-util=/usr/local/apr/bin/apu-1-config
然後make就不會報錯了,安裝也會成功了。
另外安裝另外一台的時候報錯找不到APR
[root$tgpmsidc39 httpd-2.4.27]# ./configure --prefix=/usr/local/apache2.4.27 --enable-mods-shared=all --with-ssl=/usr/local/openssl --with-apr-util=/usr/local/apr/bin/apu-1-configchecking for chosen layout... Apachechecking for working mkdir -p... yeschecking for grep that handles long lines and -e... /bin/grepchecking for egrep... /bin/grep -Echecking build system type... x86_64-pc-linux-gnuchecking host system type... x86_64-pc-linux-gnuchecking target system type... x86_64-pc-linux-gnuconfigure: configure: Configuring Apache Portable Runtime library...configure: checking for APR... configure: WARNING: APR version 1.4.0 or later is required, found 1.3.9configure: WARNING: skipped APR at apr-1-config, version not acceptablenoconfigure: error: APR not found. Please read the documentation.
解決辦法:
./configure --prefix=/usr/local/apache2.4.27 --enable-mods-shared=all --with-ssl=/usr/local/openssl --with-apr-util=/usr/local/apr/bin/apu-1-config --with-apr=/usr/local/apr/bin/apr-1-config --with-lib=/usr/local/apr/lib
成功
makemake install