Apache配置压缩优化时报错——undefined symbol: inflateEnd

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1345264

   圣诞都过了,好久没来51发博文了。最近一直在忙考试和其他一些私人事务,感觉长期不发博文,有点不好。不是不发,实在是最近总结的东西,没法发,都是一些考试相关的东西。蛋疼!正好帮助朋友搭网站环境了,就想起来之前有一篇总结错误的文章当时想发,后来给忘掉了,今天就拿出来发上吧。哈哈!


Apache配置压缩优化时报错——undefined symbol: inflateEnd

环境:CentOS 6.4  
软件版本:httpd-2.4.6 apr-1.4.8 apr-util-1.5.2 pcre-8.33
其他的软件和库文件:
yum -y groupinstall "Development tools" "Server Platform Development"
yum -y install pcre-devel

问题描述:

在apache上做压缩优化的时候,当我DSO方式添加完mod_deflate,并且配置好压缩参数之后,检查语法的是否出现如下报错:

httpd: Syntax error on line 102 of /application/apache2.4.6/conf/httpd.conf: Cannot load modules/mod_deflate.so into server: /application/apache2.4.6/modules/mod_deflate.so: undefined symbol: inflateEnd

未定义的符号:inflateEnd


问题处理办法:

1、首先检查了httpd.conf和httpd-vhosts.conf里面的配置,均无错误;然后又查看了编译mod_deflate时的输出信息,也没有提示错误。

2、我百度了inflateEnd,第一个就是搜索条目就是zlib的百度百科,然后我就去google搜索inflateEnd,搜索条目告诉我inflateEnd是属于zlib.lib库文件里面的。

3、接着我在google下面找到了以前也遇到过相似问题的人,他们是在apr的主配置文件apr-1-config(老版本可能是apr-conf)里面将LDFLAGS="" 修改为 LDFLAGS="-lz",然后用apxs从新编译mod_deflate.c后,apache服务就正常了,并且也可以正常压缩文件了。

该问题的另一种解决办法:

需要在 LoadModule deflate_module  modules/mod_deflate.so 的前面加载zlib.so

如果是32操作系统就在LoadModule deflate_module     modules/mod_deflate.so这行的上一行添加LoadFile /usr/lib/libz.so即可。

如果是64操作系统就在LoadModule deflate_module     modules/mod_deflate.so这行的上一行添加LoadFile /usr/lib64/libz.so即可。


下面是一些LDFLAGS和lz的相关信息:

一、gcc 一些应用

-shared生成一个共享目标文件,他可以和其他目标文件连接产生可执行文件.只有部分系统支持该选项.

-Wl,option把选项option传递给连接器.如果option中含有逗号,就在逗号处分割成多个选项.

-w 不生成任何警告信息。

-Wall 生成所有警告信息。

lc 是link libc

lm 是link libm

lz 是link libz

-l指定程序要链接的库文件,假设库文件名为libxxx.so,链接命令为-lxxx;

放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了

-L指定库文件所在目录


二、Makefile选项讲解

CFLAGS 表示用于 C 编译器的选项。

CXXFLAGS 表示用于 C++ 编译器的选项。

这两个变量实际上涵盖了编译和汇编两个步骤。


CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入到该变量中来。

LDFLAGS:gcc 等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。用法:LDFLAGS=-L/usr/lib -L/path/to/your/lib。每安装一个包都几乎一定的会在安装目录里建立一个lib目录。如果明明安装了某个包,而安装另一个包时,它愣是说找不到,可以抒那个包的lib路径加入的LDFALGS中试一下。

LIBS:告诉链接器要链接哪些库文件,如LIBS = -lpthread -liconv

简单地说,LDFLAGS是告诉链接器从哪里寻找库文件,而LIBS是告诉链接器要链接哪些库文件。不过使用时链接阶段这两个参数都会加上,所以你即使将这两个的值互换,也没有问题。

有时候LDFLAGS指定-L虽然能让链接器找到库进行链接,但是运行时链接器却找不到这个库,如果要让软件运行时库文件的路径也得到扩展,那么我们需要增加这两个库给"-Wl,R":

LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib

如果在执行./configure以前设置环境变量export LDFLAGS="-L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib" ,注意设置环境变量等号两边不可以有空格,而且要加上引号(shell的用法)。那么执行configure以后,Makefile将会设置这个选项,链接时会有这个参数,编译出来的可执行程序的库文件搜索路径就得到扩展了。

转自:http://nolinux.blog.51cto.com/4824967/1345264

原创文章,作者:s19930811,如若转载,请注明出处:http://www.178linux.com/2007

(0)
上一篇 2016-08-15 12:12
下一篇 2016-08-15 12:12

相关推荐

  • 进程工具总结

    一、top命令         top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处…

    Linux干货 2016-09-12
  • 初涉Linux基本要点概括(1)

    计算机,这里通常指可以储存程序的计算机,根据冯诺依曼体系,计算机组成部件包括控制单元(Control Unit)、算术逻辑单元(Arithmetic Logic Unit)、内存(Memory)、输入设备(Input)、输出设备(Output)。计算机通过输入的数据和指令,可以完成各种复杂的运算任务,小到文字处理、游戏、影音、大到卫星定位,火箭发射,人工智能…

    Linux干货 2016-09-26
  • linux的一些简单的命令与操作

    1生产环境发现一台服务器系统时间产生偏差,造成服务异常,请帮忙校正。 首先通过hwclock,clock:显示硬件时间,然后通过hwclock –s来以硬件时间为准。校正系统时间。 2生产有一个数据同步脚本需要执行很长时间,怎样做到无人值守,在管理工具退出的情况下,脚本依然能正常运行。 首先看看系统里面按没安装screen,没的话要安装。 安装:首先先把光盘…

    Linux干货 2016-10-19
  • rsyslog日志存储到mysql数据库中并利用loganalyzer进行web图形化分析管理

    概述     系统日志的重要性,相信大家都深有体会,当发生故障后,第一时间就是查看相关报错信息和日志信息,以定位问题所在,还可以基于日志,进行日志的分析,从而获取系统运行状态的一些规律,本篇就介绍关于系统日志的先关内容,具体分为:     1、rsyslog相关概念的介绍 &nb…

    Linux干货 2016-10-18
  • bash 循环和函数

    回顾: 循环 循环控制:break,continuewhile , for循环的特殊用法for (());do     循环体donewhile read VARAIBLE;do     循环体done <&nbs…

    Linux干货 2016-08-24
  • 【N25第一周作业】Linux上命令的使用格式和基础命令详解

    一、Linux上命令的使用格式 命令行提示符详解: 用户通过终端的命令行接口来控制操作系统,登陆后如下: [root@localhost ~]# root: 当前登录的用户 @:分隔符 localhost: 当前主机的主机名,非完整格式;此处的完整格式为:localhost.localdomain [root@localhost ~]#&…

    Linux干货 2016-12-03