2015-06-22 90 views
1

我想編譯上面的示例代碼,但出現以下錯誤。 它是什麼原因。 「OSX - 在/ usr /本地」 下的所有文件安裝Libevent 2.0.22項目編譯問題(OSX)

// libevent2 library 
#include <stdio.h> 
#include <stdlib.h> 
#include <signal.h> 
#include <unistd.h> 
#include <evhttp.h> 
#include <event2/event.h> 
#include <event2/http.h> 
#include <event2/bufferevent.h> 

void generic_handler(struct evhttp_request *req, void *arg) { 
    struct evbuffer *buffer; 
    buffer = evbuffer_new(); 

    if (buffer == NULL) { 
     err(1, "failed to create response buffer"); 
    } 

    evbuffer_add_printf(buffer, "Requested: %sn", evhttp_request_uri(req)); 
    evhttp_send_reply(req, HTTP_OK, "OK", buffer); 
} 

int main(int argc, char **argv) { 
    struct evhttp *httpd; 
    event_init(); 
    httpd = evhttp_start("0.0.0.0", 8080); 
    // Set a callback for requests to "/specific". 
    // evhttp_set_cb(httpd, "/specific", another_handler, NULL); 
    // Set a callback for all other requests. 
    evhttp_set_gencb(httpd, generic_handler, NULL); 
    // Not reached in this code as it is now. 
    event_dispatch(); 
    evhttp_free(httpd); 
    return 0; 
} 

錯誤:

/Users/batuhangoksu/Desktop/test.c:14:10: fatal error: 'evhttp.h' file not found 
#include <evhttp.h> 
       ^
1 error generated. 

命令:

gcc -o octopus /Users/batuhangoksu/Desktop/test.c -levent -lpthread 

回答

1

首先,請找到文件的evhttp.hpath

然後,您可以檢查此path#include文件搜索路徑由命令

gcc -o octopus /Users/batuhangoksu/Desktop/test.c -levent -lpthread -v 

輸出是這樣的,

#include "..." search starts here: 
#include <...> search starts here: 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.1.0/include 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include 
/usr/include 
/System/Library/Frameworks (framework directory) 
/Library/Frameworks (framework directory) 

如果path不在搜索列表,然後將-I /missed_include(假設它是path)加到您的命令中,如

gcc -o octopus /Users/batuhangoksu/Desktop/test.c -levent -lpthread -I/missed_include