使用依赖库编译nginx模块

时间:2015-10-07 11:48:43

标签: mysql c nginx

我已按照此处的教程构建了一个成功的简单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.hmysql.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构建依赖关系的信息。

谢谢!

1 个答案:

答案 0 :(得分:1)

  

编辑控件

     

<强> - 与-CC-OPT = 参数   设置将添加到CFLAGS变量的其他参数。

     

<强> - 与-LD-OPT = 参数   设置将在链接期间使用的其他参数。

Source

对于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而未实施解决方法,则会失败。