源码编译apache报错的解决方法

 

问题介绍

在源码编译安装httpd时,./configure执行无错误,到make时就报错,在网络上搜索了很多文章,很多方法如换apr-util的低版本并不能很好的解决该错误。经过不断的努力,我最终解决了该问题,现将方法记录。

说明:apr/apr-util都是源码编译安装的

错误如下:

  1. ...
  2. /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_StopParser'
  3. /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_Parse'
  4. /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_ErrorString'
  5. /usr/local/apr-util/lib/libaprutil-1.so: undefined reference to `XML_SetElementHandler'
  6. collect2: error: ld returned 1 exit status
  7. make[2]: *** [htpasswd] 错误 1
  8. make[2]: 离开目录“/usr/local/src/httpd-2.4.28/support”
  9. make[1]: *** [all-recursive] 错误 1
  10. make[1]: 离开目录“/usr/local/src/httpd-2.4.28/support”
  11. make: *** [all-recursive] 错误 1

环境还原

这是我报错之前进行的操作:

源码安装前安装:yum install gcc gcc-c++ prce-devel expat-devel

  1. 安装apr

    1. [root@localhost src]# tar -zxvf apr-1.6.3.tar.gz
    2. [root@localhost src]# cd apr-1.6.3/
    3. [root@localhost apr-1.6.3]# ./configure --prefix=/usr/local/apr
    4. [root@localhost apr-1.6.3]# make && make install
  2. 安装apr-util
    1. [root@localhost apr-1.6.3]# cd ../
    2. [root@localhost src]# tar -zxvf apr-util-1.6.1.tar.gz
    3. [root@localhost src]# cd apr-util-1.6.1
    4. [root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/loca/apr-util --with-apr=/usr/local/apr
  3. 安装httpd
  1. [root@localhost apr-1.6.3]# cd ../
  2. [root@localhost src]# tar -zxvf httpd-2.4.28.tar.gz
  3. [root@localhost src]# cd httpd-2.4.28
  4. [root@localhost httpd-2.4.28]# ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
  5. #在执行make时就报了错

解决方法

缺少了xml相关的库,需要安装libxml2-devel包。直接安装并不能解决问题,因为httpd调用的apr-util已经安装好了,但是apr-util并没有libxml2-devel包支持。

安装libxml2-devel包

  1. [root@localhost ~]# yum install -y libxml2-devel

删除apr-util安装目录,并重新编译安装

  1. [root@localhost ~]# rm -rf /usr/local/apr-util
  2. [root@localhost ~]# cd /usr/local/src/apr-util-1.6.1
  3. # 这一步很重要,必须清除之前配置时的缓存
  4. [root@localhost apr-util-1.6.1]# make clean
  5. # 源码安装三步走
  6. [root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
  7. [root@localhost apr-util-1.6.1]# make
  8. [root@localhost apr-util-1.6.1]# make install

重新编译安装httpd

  1. # 同样要清理之前的缓存十分重要
  2. [root@localhost src]# cd /usr/local/src/httpd-2.4.28
  3. [root@localhost httpd-2.4.28]# make clean
  4. [root@localhost httpd-2.4.28]# ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
  5. [root@localhost httpd-2.4.28]# make
  6. # 这时make没报错了
  7. [root@localhost httpd-2.4.28]# make install

源码编译apache报错的解决方法的更多相关文章

  1. vs2010查看quartz.net 2.1.2的源码时其中一报错的解决方法

    问题: 使用vs2010查看quartz.net 2.1.2的源码时,报错: ..\Quartz.NET-2.1.2\server\Quartz.Server\Quartz.Server.2010.c ...

  2. Android 源码编译及常见错误及解决方法

    最近要往arm开发板上移植android系统,大大小小的问题遇到了太多太多,都是泪啊.本人初接触嵌入式开发,对问题的根源不是太了解,不过好在每解决一个问题,便记录一下.话不多说,正式罗列问题: hos ...

  3. 编译geth报错的解决方法 make: *** [geth] 错误 1

    在centos下安装了go1.9.1版本,编译go-ethereum时报错: [root@localhost go-ethereum]# make gethbuild/env.sh go run bu ...

  4. Rocketmq源码导入eclipse时报错的解决方法

    1,Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-help-plugi ...

  5. Vue 项目在其他电脑 npm run dev 运行报错的解决方法

    一个 Vue 项目从一台电脑上传到 github 上之后,再另外一台电脑上 git clone .并使用 npm run dev 或 npm run start 发生以下报错的解决方法.   报错原因 ...

  6. iOS 开发之--打测试包的时候报错的解决方法

    在打测试包的时候,一直出现一个报错,解决方法如下: 方法一: 描述文件所在目录是:~/Library/MobileDevice/Provisioning\ Profiles/,可以直接前往文件夹,把所 ...

  7. ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法

    原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法 群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebServi ...

  8. 网站eurl.axd报错的解决方法

    网站eurl.axd报错的解决方法 错误发生的原因是当ASP.NET检测到Web站点配置为使用ASP.NET 4.0,本地ASP.NET 4.0 的组件会传递一个不能扩展的 URL到ASP.NET的管 ...

  9. MySQL中遇到的几种报错及其解决方法

    MySQL中遇到的几种报错及其解决方法 1.[Err] 1064 - You have an error in your SQL syntax; check the manual that corre ...

随机推荐

  1. se37 函数中的异常使用

    一种是rase <exceptions> FUNCTION ztest. *"-------------------------------------------------- ...

  2. dubbo学习笔记四(异步调用)

    相关资料 官方文档 项目结构 代码示例 [EchoTestApp] @RestController @SpringBootApplication @ImportResource("class ...

  3. java接口自动化测试小dome

    GitHub地址:https://github.com/leonInShanghai/InterfaceAutomation 这个dome 请求 https://www.v2ex.com/api/no ...

  4. Elasticsearch中文文档,内容不全

    注意 内容不全,这是观看中文文档进行操作的 文档地址 旧版中文文档,部分内容过期 https://www.elastic.co/guide/cn/elasticsearch/guide/current ...

  5. 团队作业-Beta冲刺(周四)

    一. 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 这个作业要求在哪里 https://edu.c ...

  6. linux PHP空间设置GZIP压缩网页方法!

    网站设置GZIP压缩,缩小网页体积,让网站访问速度更快!方法很简单,只需要在你的网站根目录建立.htaccess文件并输入以下代码: 新建-记事本-复制以下代码:(如果网站已有.htaccess文件, ...

  7. 第08课:【实战】Redis网络通信模块源码分析(1)

    我们这里先研究redis-server端的网络通信模块.除去Redis本身的业务功能以外,Redis的网络通信模块实现思路和细节非常有代表性.由于网络通信模块的设计也是Linux C++后台开发一个很 ...

  8. 多线程-生产者消费者(synchronized同步)

    正解博客:https://blog.csdn.net/u011863767/article/details/59731447 永远在循环(loop)里调用 wait 和 notify,不是在 If 语 ...

  9. CodeForces - 1209F Koala and Notebook(拆边+BFS)

    题意:给定一个n个点m条边的无向图,边权分别为1-m,从起点1出发,每经过一条边就把边权以字符串的形式加入末尾,求到达其他每个点的最小字符串(长度不同的短的更小,否则字典序小的更小). 思路很巧妙,将 ...

  10. Angular7和leaflet一起使用时的作用域不一致

    Angular7和leaflet一起使用时的作用域不一致问题,使用(e) =>可以完美解决. 使用原始的JavaScript: map.on("click", functio ...