源码编译httpd时出现的undefined reference to `XML_GetErrorCode‘

执行了这句话之后:

[root@centos8 httpd-2.4.46]#./configure --prefix=/apps/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-apr=/apps/apr/ \
--with-apr-util=/apps/apr-util/ \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork

[root@centos8 httpd-2.4.46]# make -j 4 && make install
执行此步骤是出错
已经指定了安装路径,还是出错。
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_GetErrorCode'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetEntityDeclHandler'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserCreate'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetCharacterDataHandler'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserFree'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetUserData'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_StopParser'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_Parse'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ErrorString'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetElementHandler'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:48: htpasswd] Error 1
make[2]: *** Waiting for unfinished jobs....
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_GetErrorCode'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetEntityDeclHandler'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserCreate'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetCharacterDataHandler'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserFree'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetUserData'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_StopParser'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_Parse'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ErrorString'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetElementHandler'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:52: htdigest] Error 1
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ErrorString'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetUserData'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserFree'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetElementHandler'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetCharacterDataHandler'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_GetErrorCode'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetEntityDeclHandler'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_StopParser'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserCreate'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_Parse'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:73: ab] Error 1
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_GetErrorCode'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetEntityDeclHandler'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserCreate'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetCharacterDataHandler'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ParserFree'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetUserData'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_StopParser'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_Parse'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ErrorString'
/apps/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetElementHandler'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:65: htdbm] Error 1
make[2]: Leaving directory '/root/httpd-2.4.46/support'
make[1]: *** [/root/httpd-2.4.46/build/rules.mk:75: all-recursive] Error 1
make[1]: Leaving directory '/root/httpd-2.4.46/support'
make: *** [/root/httpd-2.4.46/build/rules.mk:75: all-recursive] Error 1

解决办法
expat,apr,apr-util这三个库的编译安装一定要按顺序进行,如果没有按顺序编译,请清理后重新按顺序编译安装,否则指定了路径也会出错。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 下载httpd源码包,解压缩到指定目录。 2. 安装必要的依赖库,如apr、apr-util、pcre等。 3. 进入httpd源码目录,执行configure命令,生成Makefile文件。 4. 执行make命令,编译httpd源码。 5. 执行make install命令,安装httpd到指定目录。 6. 配置httpd的配置文件httpd.conf,启动httpd服务。 7. 在浏览器中输入http://localhost,即可访问httpd服务。 ### 回答2: 在Linux系统上,Apache HTTP服务器是最常见的Web服务器。要在Linux系统上安装Apache HTTP服务器,可以使用预编译的软件包或自己从源代码中编译安装。源代码编译安装httpd可以更好地优化自己的服务。以下是您需要遵循的步骤: 1. 下载Apache HTTP服务器源代码 您可以在Apache HTTP服务器官方网站上下载最新的源代码。在下载之前,您应该首先确定您要下载的是最新版本的源代码。 2. 设置httpd安装目录 通常,httpd的安装目录默认为“/usr/local/apache2”,但您可以将其更改为其他目录。可以通过设置configure选项来指定安装目录,如下所示: ./configure --prefix=/your/installation/directory 3. 安装依赖软件 在安装Apache之前,您需要安装一些必要的软件。这些软件包括APR,APR-util和pcre。在Ubuntu和Debian上,可以使用以下命令安装这些软件包: sudo apt-get install libapr1-dev libaprutil1-dev libpcre3-dev 4. 配置和编译源代码 解压缩源代码并进入目录,然后使用./configure命令进行配置: ./configure --prefix=/usr/local/apache2 然后,使用make命令编译源代码: make 5. 安装和配置httpd 完成编译后,可以使用make install命令安装httpd: make install 之后,进入“/usr/local/apache2/conf”目录并编辑“httpd.conf”文件。您需要根据您的情况更改以下设置: - 服务器名称 - 监听端口 - 文档根目录 - 访问权限 编辑完毕后,保存并退出httpd.conf文件。然后,可以启动httpd服务器并测试其功能。例如,可以使用以下命令启动httpd服务器: /usr/local/apache2/bin/apachectl start 如果安装和配置正确,您应该可以在浏览器中访问http://localhost,看到Apache欢迎页面。 总之,从源代码编译安装httpd更好的控制服务器的行为和性能,需要遵循上述几个步骤,即下载、设置安装目录、安装依赖软件、配置和编译源代码、安装和配置httpd,才能成功安装和使用。 ### 回答3: Apache HTTP Server是一个跨平台的,开放源代码的Web服务器。它是最流行的Web服务器之一,并广泛用于Linux系统中。这里我们讲述如何通过源码编译安装httpd。 1. 下载源代码 从官网下载Apache HTTP Server的源代码,这里我们下载最新版本2.4.46。在终端中输入以下命令完成对源代码的下载和解压缩: ```bash wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.46.tar.gz tar zxvf httpd-2.4.46.tar.gz ``` 2. 安装Prerequisites 在编译和安装httpd之前,需要先在系统中安装一些软件包。使用以下命令在Ubuntu系统中安装这些软件包: ```bash sudo apt-get update sudo apt-get install build-essential sudo apt-get install libexpat1-dev sudo apt-get install libaprutil1-dev sudo apt-get install libpcre3-dev ``` 3. 配置和编译 在安装了Prerequisites之后,使用以下命令配置Apache HTTP Server的构建: ```bash cd httpd-2.4.46 ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl --with-ssl=/usr/bin/openssl --with-included-apr --enable-mpms-shared=all ``` 解释一下上面的参数: - --prefix:指定httpd的安装路径 - --enable-so:启用动态加载模块 - --enable-ssl:启用SSL支持 - --with-ssl:指定SSL库的位置 - --with-included-apr:使用当前源代码中所包含的APR库 - --enable-mpms-shared=all:开启多进程模块 4. 进行安装 在完成configure之后,使用以下命令编译和安装httpd: ```bash make sudo make install ``` 此会将编译后的文件安装在--prefix指定的路径下。 5. 配置服务 使用以下命令将httpd设定为系统服务: ```bash sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/ sudo chmod +x /etc/init.d/apachectl sudo update-rc.d apachectl defaults ``` 至此,我们已经成功通过源码编译安装了httpd,并将其设定为系统服务。最后,使用以下命令启动httpd服务: ```bash sudo service apachectl start ``` 可以通过以下的网址验证httpd是否成功安装: ```bash http://localhost/ ``` 在浏览器中输入上述命令,若显示 “It works!” 则证明httpd已经成功安装。 总之,安装Apache HTTP Server是在Linux系统上运行Web服务器的最佳方式之一。通过源码编译安装httpd可以为管理员提供更多的自定义选项和更好的控制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值