添加Mongoose Embedded后无法弄清楚如何构建C应用程序

时间:2014-12-03 05:56:21

标签: c makefile mongoose-web-server

我对C开发很新,尤其是makefile,所以请耐心等待。我有一个功能强大的C应用程序,它使用它的Makefile很好地构建(based on this project),但我希望能够让它响应http请求。因此,猫鼬。

在功能上,Makefile调用:

g++ -pthread -I./ -I../../dmx/include -I/usr/include/glib-2.0 -I/usr/include/gtk-3.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0  -g -c DMXController.c -o DMXController.o -Wno-deprecated-declarations
g++ -o DMXController.bin DMXController.o -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0 -lusb -lm -L../../dmx/lib -ldmx -L. -ldl -lpthread  -Wl,--no-whole-archive -rdynamic
rm DMXController.o 

这没有没有任何Mongoose函数调用,但只要我添加一个就会中断。我将mongoose.c和mongoose.h文件复制到直接父目录并添加{ {1}},但我不确定如何将依赖项添加到Makefile中。

Mongoose文档说使用#include "mongoose.h"形式构建,但我如何将其与我已有的相结合?

如果我使用 mongoose函数调用在我的应用程序代码上运行现有的Makefile,则编译错误为:cc app.c mongoose.c -pthread -o app(或者我可能使用的任何其他mongoose函数)。

应用程序代码的相关部分如下。

undefined reference to 'mg_create_server'

Makefile的内容:(目前......我一直在尝试各种各样的事情)

#include <gtk/gtk.h>                        // GTK+3.0 graphics library
#include <dmx.h>                            // DMX interface library
#include "mongoose.h"                       // Mongoose Web server

// ...

int main( int argc, char *argv[] )
{
    // initialize mg
    struct mg_server *server = mg_create_server(NULL, NULL); // undefined reference
    mg_set_option(server, "document_root", ".");      // undefined reference
    mg_set_option(server, "listening_port", "8080");  // undefined reference

    // initialize DMX
    int error;
    error = initDMX(); // local function that works fine
    if ( error < 0 ) return ( error );

    // do stuff 
    for (;;) {
            mg_poll_server(server, 1000);   // undefined reference
    }

    // kill mg
    mg_destroy_server(&server); // undefined reference

    // kill DMX
    exitDMX(); // local function that works fine

    // die quietly
    return ( 0 );
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是添加到Makefile:

LDFLAGS+=../mongoose.c

这将构建mongoose并将其与您的应用程序链接