如何在Apache2.4中加载完整的库

时间:2015-09-07 08:54:02

标签: c apache apache2

我为Apache2.4创建了一个使用外部库(MagickWand)的自定义模块。我使用sudo apt-get install libmagickwand-dev安装它,但是现在,为了在Apache2.4中使用它我需要做什么?当我重新启动apache2服务时,我得到了关于MagickWand上的函数的未定义符号错误。 我读到我应该加载库的共享对象,但是我该如何创建它?使用apxs?哪里?

非常感谢你!

2 个答案:

答案 0 :(得分:0)

apache2中有两个配置文件需要修改:

(对于linux)

/ etc / apache2中的

有感兴趣的子目录:

./ mods-available和./mods-enabled和./conf-available and ./conf-enabled

./mods-available目录包含所有可加载模块,所有模块的文件名都为.load扩展名

./mods-enabled目录包含指向要加载的./mods-available目录中的可加载模块的链接,以及指向每个.conf文件的.conf文件的链接(对于各个可加载模块)实际上是要加载的。

./conf-available目录包含可加载模块的所有.conf文件

./conf-enabled目录包含指向实际使用的可加载模块配置的./conf-available目录中文件的链接

然后在/ etc / apache2目录中是文件apache2.conf,它可以包含(除其他外)这两个语句:

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

这是指导apache2实际加载模块及其相关conf文件的原因

答案 1 :(得分:0)

以下回复是为了帮助他人:

为了使用带有MagickWand库的apxs编译自定义apache模块,首先在C文件中包含头文件wand/magick-wand.h。假设它是mod_example.c:

所以,在mod_example.c中添加:

#include "wand/magick-wand.h"

现在,使用apxs编译模块时,使用-I标志包含MagickWand在构建过程中需要的目录,并使用-l标志提及库名称

sudo apxs -c -i -I/usr/include/ImageMagick-6 -I/usr/include/x86_64-linux-gnu/ImageMagick-6 -lMagickWand-6.Q16 /path/to/mod_example.c

请注意,您的图书馆版本可能会有所不同。