我已按照此处的教程构建了一个成功的简单nginx模块:https://github.com/perusio/nginx-hello-world-module
我可以毫无问题地构建和运行该代码,并且它可以正常运行。
我现在想要将MySQL的依赖性添加到简单的nginx模块中,所以我使用了MySQL C Connector http://dev.mysql.com/doc/refman/5.6/en/c-api-building-clients.html。
您可以编写的最简单的程序(取自http://zetcode.com/db/mysqlc/):
mysql_test.c
#include <my_global.h>
#include <mysql.h>
int main(int argc, char **argv)
{
printf("MySQL client version: %s\n", mysql_get_client_info());
exit(0);
}
然后你这样编译:
$ gcc mysql_test.c -o mysql_test `mysql_config --cflags --libs`
这很好用。
现在,当我尝试将两个头文件my_global.h
和mysql.h
包含在我的简单nginx hello-world模块中时,我需要一种指定这些构建标志的方法,否则它会赢得&#39;找到那些头文件。目前,当我运行make
时,在成功构建所有其他模块之后,我现在得到:
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules -I src/mail \
-o objs/addon/nginx-hello-world-module/ngx_http_hello_world_module.o \
/vagrant/nginx-hello-world-module/ngx_http_hello_world_module.c
/vagrant/nginx-hello-world-module/ngx_http_hello_world_module.c:33:23: fatal error: my_global.h: No such file or directory
#include <my_global.h>
^
compilation terminated.
make[1]: *** [objs/addon/nginx-hello-world-module/ngx_http_hello_world_module.o] Error 1
make[1]: Leaving directory `/vagrant/nginx'
make: *** [build] Error 2
我的问题是:在构建模块时,如何让nginx包含这些构建标志?
我还没有找到任何关于与Nginx构建依赖关系的信息。
谢谢!
答案 0 :(得分:1)
编辑控件
<强> - 与-CC-OPT 强> = 参数 设置将添加到CFLAGS变量的其他参数。
<强> - 与-LD-OPT 强> = 参数 设置将在链接期间使用的其他参数。
对于MySQL Connector C,它将类似于:
--with-cc-opt="-I/usr/include/mysql"
--with-ld-opt="-L/usr/lib64/mysql"
在您的模块config
文件中:
CORE_LIBS="$CORE_LIBS -lmysqlclient"
在编译期间,它可能还会抱怨_GNU_SOURCE
被重新定义,如果您使用-Werror
而未实施解决方法,则会失败。