Невозможно связать LIBEVENT как C ++ - PullRequest
6 голосов
/ 18 ноября 2011

Почему это не работает, файл test.c:

#include <event.h>
int main(void)
{
    event_init();
    return 0;
}

Затем: gcc -o test.o -c test.c работает нормально, но

Ссылка: g++ -o test -levent test.o производит

test.o: In function `main':
test.c:(.text+0x5): undefined reference to `event_init'
collect2: ld returned 1 exit status

Так что его нельзя связать как C++.Как это решить?Мне нужно связать его как C++ и скомпилировать как C.

1 Ответ

12 голосов
/ 18 ноября 2011

Этот вопрос задавался много раз. В Linux вы должны поставить библиотеки после объектов и исходных файлов в команде компиляции. Так что попробуйте

g++ -Wall -g -c mytest.cc 
g++ -Wall -g mytest.o -levent -o mytest

Избегайте вызова вашей тестовой программы test, которая является существующей утилитой или встроенной оболочкой.

Как новичок, не забывайте всегда компилировать все предупреждения, задаваемые -Wall и для отладки -g, и учиться использовать gdb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...