Apache2.4如何加载一个完整的库

How to load a complete library in Apache2.4

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

非常感谢您!

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

(对于 linux)

在 /etc/apache2 中有感兴趣的子目录:

./mods-available 和 ./mods-enabled 和 ./conf-available 和 ./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 实际加载模块及其相关配置文件的原因

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

为了使用带有 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

请注意,您的库版本可能不同。