Linux环境下apache阿帕奇安装配置失败报错,编译失败的解决方案,Apache安装升级OpsenSSL步骤

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/openssl
make
make install

安装之后如果有历史版本的OpenSSL,则需要处理一下

mv /usr/bin/openssl/usr/bin/openssl.bak
mv /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.1
ln -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.conf
include 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.gz
cd apr-1.6.2
./configure --prefix=/usr/lcoal/apr
make
make install

解压后安装Expat

tar  -xvzf expat-2.2.4.tar.gz
cd expat-2.2.4
./configure
make
make install

安装apr-util

tar  -xvzf apr-util-1.6.0.tar.gz
cd apr-util-1.6.0

发现系统报错:

[root$tgpmsidc39 apr-util-1.6.0]# ./configure 
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking for working mkdir -p... yes
APR-util Version: 1.6.0
checking for chosen layout... apr-util
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
Applying apr-util hints file rules for x86_64-pc-linux-gnu
checking for APR... no
configure: 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/pcre
make
make 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-config
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
configure: 
configure: Configuring Apache Portable Runtime library...
configure: 
checking for APR... configure: WARNING: APR version 1.4.0 or later is required, found 1.3.9
configure: WARNING: skipped APR at apr-1-config, version not acceptable
no
configure: 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

成功

make
make install




  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值