我为Apache2.4创建了一个使用外部库(MagickWand)的自定义模块。我使用sudo apt-get install libmagickwand-dev
安装它,但是现在,为了在Apache2.4中使用它我需要做什么?当我重新启动apache2服务时,我得到了关于MagickWand上的函数的未定义符号错误。
我读到我应该加载库的共享对象,但是我该如何创建它?使用apxs?哪里?
非常感谢你!
答案 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
请注意,您的图书馆版本可能会有所不同。