Reputation: 849
I get example apache2 module here:
https://httpd.apache.org/docs/2.4/developer/modguide.html
and I want to use there this sds library https://github.com/antirez/sds
So I will create new module and goto module dir:
apxs -g -n mymodule
cd mod_mymodule
add on line 44 of mod_mymodule.c:
#include "sds.h"
and into the mymodule_handler on line 49 I will add
sds a = sdsnew("a");
sds b = sdsnew("b");
if (sdscmp(a, b) == 0)
return (DECLINED);
I also put library files (sds.c, sds.h, sdsalloc.h) into the same directory as my module source code file and then I will call:
sudo apxs -i -a -c mod_mymodule.c
Then I will restart apache, but it fails to start because of:
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
Question: How can I modify apxs command to make my new module work with included library?
Upvotes: 0
Views: 212
Reputation: 17896
If you want to link them together into your module, you'd pass in all the .c files. Keep the one that's a module first otherwise you have to also pass -n for the module name.
If "sds" were instead an installed library, you'd pass -lsds to apxs just as you would to compiple without apxs.
Upvotes: 0