我在这里获得了示例apache2模块:
https://httpd.apache.org/docs/2.4/developer/modguide.html
我想在那里使用这个sds库https://github.com/antirez/sds
因此,我将创建新的模块并转到模块目录:
apxs -g -n mymodule
cd mod_mymodule在mod_mymodule.c的第44行添加:
#include "sds.h"在第49行的mymodule_handler中,我将添加
sds a = sdsnew("a");
sds b = sdsnew("b");
if (sdscmp(a, b) == 0)
return (DECLINED);我还将库文件(sds.c、sds.h、sdsalloc.h)放在与模块源代码文件相同的目录中,然后我将调用:
sudo apxs -i -a -c mod_mymodule.c然后我将重新启动apache,但它无法启动,原因是:
apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/mymodule.load: Cannot load /usr/lib/apache2/modules/mod_mymodule.so into server: /usr/lib/apache2/modules/mod_mymodule.so: undefined symbol: sdscmp问:如何修改apxs命令以使我的新模块与所包含的库一起工作?
发布于 2021-03-11 03:56:37
如果你想把它们链接到你的模块中,你需要传入所有的.c文件。首先保留模块名称,否则还必须传递-n作为模块名称。
如果"sds“是一个已安装的库,您将把-lsds传递给apxs,就像没有apxs的情况下传递给compiple一样。
https://stackoverflow.com/questions/66531928
复制相似问题