前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache配置压缩优化时报错——undefined symbol: inflateEnd

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

作者头像
星哥玩云
发布2022-06-28 17:03:57
6870
发布2022-06-28 17:03:57
举报
文章被收录于专栏:开源部署

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将会设置这个选项,链接时会有这个参数,编译出来的可执行程序的库文件搜索路径就得到扩展了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档