首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用apxs2编译内含sds库的apache模块

如何用apxs2编译内含sds库的apache模块
EN

Stack Overflow用户
提问于 2021-03-08 22:48:03
回答 1查看 28关注 0票数 0

我在这里获得了示例apache2模块:

https://httpd.apache.org/docs/2.4/developer/modguide.html

我想在那里使用这个sds库https://github.com/antirez/sds

因此,我将创建新的模块并转到模块目录:

代码语言:javascript
复制
apxs -g -n mymodule
cd mod_mymodule

在mod_mymodule.c的第44行添加:

代码语言:javascript
复制
#include "sds.h"

在第49行的mymodule_handler中,我将添加

代码语言:javascript
复制
sds a = sdsnew("a");
sds b = sdsnew("b");
if (sdscmp(a, b) == 0) 
    return (DECLINED);

我还将库文件(sds.c、sds.h、sdsalloc.h)放在与模块源代码文件相同的目录中,然后我将调用:

代码语言:javascript
复制
sudo apxs -i -a -c mod_mymodule.c

然后我将重新启动apache,但它无法启动,原因是:

代码语言:javascript
复制
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命令以使我的新模块与所包含的库一起工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-11 03:56:37

如果你想把它们链接到你的模块中,你需要传入所有的.c文件。首先保留模块名称,否则还必须传递-n作为模块名称。

如果"sds“是一个已安装的库,您将把-lsds传递给apxs,就像没有apxs的情况下传递给compiple一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66531928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档