【问题标题】:undefined reference to `event_new' when compiling with libevent使用 libevent 编译时对“event_new”的未定义引用
【发布时间】:2014-04-27 14:33:58
【问题描述】:

我现在正在使用 libevent:

#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdio.h>
#include <event2/event.h>

struct event_base *base;
int PORT = 9999;
int BACKLOG = 5;

int create_bind_listen()
{
    struct sockaddr_in my_addr;
    int yes = 1;
    int sock = socket(AF_INET, SOCK_STREAM, 0);
    setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int));
    memset(&my_addr, 0, sizeof(struct sockaddr_in));
    my_addr.sin_family = AF_INET;
    my_addr.sin_port = htons(PORT);
    my_addr.sin_addr.s_addr = INADDR_ANY;
    bind(sock, (struct sockaddr*)&my_addr, sizeof(struct sockaddr));
    listen(sock, BACKLOG);
    return sock;
}

void cb_func(evutil_socket_t fd, short what, void *arg)
{
    printf("%d\n", fd);
}

int main()
{
    int sock = create_bind_listen();
    struct event *ev;
    base = event_base_new();
    /*   */
    ev = event_new(base, sock,
                   (short)EV_READ|EV_PERSIST,
                   cb_func, NULL);
    event_add(ev, NULL);
    event_base_dispatch(base);
    return 0;
}

当我用它编译时:

gcc -Wall main.c -levent -levent_core

发生错误:

/tmp/cc9x1mMj.o: In function `main':
main.c:(.text+0x11b): undefined reference to `event_new'
collect2: ld returned 1 exit status

我该如何解决这个问题?

谢谢!

【问题讨论】:

    标签: c linux makefile libevent


    【解决方案1】:
    c++ -std=c++17 -O3   'first 3.cpp' `pkg-config --cflags --libs libevent libkqueue libevent_pthreads`  -o t
    

    【讨论】:

      【解决方案2】:

      FWIW 我需要更新版本的 libevent,然后这对我来说就消失了... libevent-2.1.8-stable 工作。 (它基本上需要 libevent2)。

      也许可以安装libevent2-devel 包而不是libevent-devel 包。

      【讨论】:

      【解决方案3】:

      您需要指定您的.a 所在的目录。文件位于 -L 选项:

      gcc -Wall main.c -L. -levent -levent_core
      

      【讨论】:

      • 而且似乎参数的顺序也很重要。例如,编译将在以下输入中失败:gcc -Wall -L. -levent -levent_core main.c
      猜你喜欢
      • 2012-08-16
      • 2023-03-10
      • 2021-12-26
      • 2016-04-25
      • 2019-09-05
      • 2016-05-02
      • 2013-06-12
      • 2021-09-22
      • 1970-01-01
      相关资源
      最近更新 更多