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

 

问题介绍

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

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

错误如下:

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

环境还原

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

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

  1. 安装apr

    [root@localhost src]# tar -zxvf apr-1.6.3.tar.gz
    [root@localhost src]# cd apr-1.6.3/
    [root@localhost apr-1.6.3]# ./configure --prefix=/usr/local/apr
    [root@localhost apr-1.6.3]# make && make install
  2. 安装apr-util
    [root@localhost apr-1.6.3]# cd ../
    [root@localhost src]# tar -zxvf apr-util-1.6.1.tar.gz
    [root@localhost src]# cd apr-util-1.6.1
    [root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/loca/apr-util --with-apr=/usr/local/apr
  3. 安装httpd
[root@localhost apr-1.6.3]# cd ../
[root@localhost src]# tar -zxvf httpd-2.4.28.tar.gz
[root@localhost src]# cd httpd-2.4.28
[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 #在执行make时就报了错

解决方法

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

安装libxml2-devel包

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

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

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

重新编译安装httpd

# 同样要清理之前的缓存十分重要
[root@localhost src]# cd /usr/local/src/httpd-2.4.28
[root@localhost httpd-2.4.28]# make clean
[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
[root@localhost httpd-2.4.28]# make
# 这时make没报错了 [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. linux下NVIDIA GPU驱动安装最简方式

    之前一节已经写到了,上次的GPU driver驱动安装并不成功,因此,这次换了一种方式,比较傻瓜,但是很好使. 首先使用命令查看显示器的设备(请将显示器插在显卡上,如果插在集显上可能信息不正常) su ...

  2. java的移位和异或运算

    Java移位运算种类 基础:我们知道在Java中int类型占32位,可以表示一个正数,也可以表示一个负数.正数换算成二进制后的最高位为0,负数的二进制最高为为1 例子: -5换算成二进制后为:1111 ...

  3. iOS资料大全

    1.创建自己的Xcode 模板类工程 https://mp.weixin.qq.com/s?__biz=MzAxMzE2Mjc2Ng==&mid=2652155923&idx=1&am ...

  4. no input file specified 三种解决方法

    一.IIS Noinput file specified 方法一:改PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS 方法二: 请修改php.ini 找到 ; cgi.f ...

  5. SecureCRT 连接 Centos7.0 (桥接模式),且能连接公网。

    1.查看本地网络信息 ip:172.20.10.7 2.在VMware下配置Centos为桥接模式: 3.在Centos命令行输入 ip addr 查看Centos的mac地址 网口:eno16777 ...

  6. windows删除已注册服务

    背景:近日,想要学习mysql主从复制,于是想在本地用多个mysql实例进行试验,试验的过程中总是挫折不断,生手不易,安装了很多实例,测试完成之后,想要删除这些实例. 虽然任务管理器可以停止任务,但是 ...

  7. Iterator、Generator、Decorator、Descriptor

    Python中的迭代器.生成器.装饰器.描述符. 可迭代对象(iterable)但凡是可以返回一个迭代器的对象都可成为可迭代对象可迭代对象实现了__iter__方法,该方法返回一个迭代器对象迭代器(i ...

  8. chown -R lyd usbsend

    chown -R lyd usbsend chown -R lyd usbsend chown -R lyd usbsend 某一个目录下所有文件授权给lyd

  9. 高性能mysql 第5章 创建高可用的索引

    b-tree索引 一定程度上说,mysql只有b-tree索引.他没有bitmap索引.还有一个叫hash索引的,只在Memory存储引擎中才有. b-tree索引跟oracle中的大同小异. mys ...

  10. C++类模板——博客链接

    https://www.jianshu.com/p/70ca94872418 C++类模板,你看我就够了 值得学习~