我为Apache2.4创建了一个自定义模块,它使用了一个外部库(MagickWand)。我使用sudo apt-get install libmagickwand-dev安装了它,但是现在,为了在Apache2.4中使用它,我必须做些什么呢?当我重新启动apache2服务时,我得到了关于MagickWand上一个函数的未定义符号错误。我读到应该加载库的共享对象,但是如何创建它呢?使用apxs?哪里?
非常感谢您提前!
发布于 2015-09-09 15:01:19
apache2中有两个配置文件需要修改:
(适用于linux)
在/etc/apache2中有感兴趣的子目录:
./mods-可用和./mods-启用和./conf-可用和./conf启用
./mods-可用目录包含所有可加载的模块,它们的文件名上都有.load扩展名。
启用./mods的目录包含指向./mods中可加载模块的链接--要加载的可用目录和实际要加载的每个.conf文件(单个可加载模块)的.conf文件链接。
./conf可用目录包含可加载模块的所有.conf文件。
启用./conf的目录包含指向./conf可用目录中将实际使用的可加载模块配置的文件的链接。
然后,在/etc/apache2目录中,文件apache2.conf可以包含(除其他外)这两个语句:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf这就是引导apache2实际加载模块及其相关的conf文件的原因。
发布于 2017-10-02 14:39:53
以下是帮助他人的对策:
为了使用带有MagickWand库的apxs编译自定义apache模块,首先在C文件中包含头文件wand/magick-wand.h。假设是mod_example.c:
因此,在mod_example.c中添加:
#include "wand/magick-wand.h"现在,在使用apxs编译模块时,包括MagickWand在构建过程中使用-I标志所需的目录,并使用-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请注意,您的库版本可能有所不同。
https://stackoverflow.com/questions/32434651
复制相似问题