Я пытаюсь связать libevent с помощью g ++, но у меня возникли проблемы, поскольку при настройке я установил каталог установки libevent с флагом —prefix. Чтобы установить libevent, я скачал последний источник, распаковал его и выполнил следующие команды в каталоге
./ configure --prefix = / home / tom / local --disable-shared делать сделать установку
После выполнения этих команд libevent успешно устанавливается в папку / home / tom / local. Теперь, чтобы проверить, что я могу использовать libevent, я скачал образец сервера rot13 с libevent, который можно найти в нижней части: http://www.wangafu.net/~nickm/libevent-book/01_intro.html
Для компиляции я запускаю следующую команду:
g ++ -I = / home / tom / local / include rot13server.cpp -L / home / tom / local / lib
Но я получаю следующие ошибки компиляции:
/tmp/cctwJY4k.o: В функции `alloc_fd_state (event_base *, int) ': libevent.cc:(.text+0x9b): неопределенная ссылка на `event_new ' libevent.cc:(.text+0xec): неопределенная ссылка на `event_new ' libevent.cc:(.text+0x11a): неопределенная ссылка на `event_free ' /tmp/cctwJY4k.o: в функции `free_fd_state (fd_state *) ': libevent.cc:(.text+0x1b6): неопределенная ссылка на `event_free ' libevent.cc:(.text+0x1c9): неопределенная ссылка на `event_free ' /tmp/cctwJY4k.o: В функции `do_read (int, short, void *) ': libevent.cc:(.text+0x310): неопределенная ссылка на `event_add ' /tmp/cctwJY4k.o: В функции `do_write (int, short, void *) ': libevent.cc:(.text+0x4da): неопределенная ссылка на `event_del ' /tmp/cctwJY4k.o: В функции `do_accept (int, short, void *) ': libevent.cc:(.text+0x564): неопределенная ссылка на evutil_make_socket_nonblocking libevent.cc:(.text+0x5da): неопределенная ссылка на `event_add ' /tmp/cctwJY4k.o: в функции `run () ': libevent.cc:(.text+0x5f3): неопределенная ссылка на `event_base_new ' libevent.cc:(.text+0x63f): неопределенная ссылка на evutil_make_socket_nonblocking libevent.cc:(.text+0x6d2): неопределенная ссылка на `event_new ' libevent.cc:(.text+0x6e7): неопределенная ссылка на `event_add ' libevent.cc:(.text+0x6f3): неопределенная ссылка на `event_base_dispatch ' collect2: error: ld вернул 1 состояние выхода
Похоже, что компилятор находит включаемые файлы, но не объектные файлы.
Я также попытался настроить libevent без опции —disable-shared, а затем экспортировал / home / tom / local / lib в LD_LIBRARY_PATH, но я все еще получаю ту же ошибку с командой compile:
g ++ -I = / home / tom / local / include rot13server.cpp
Может кто-нибудь сказать мне, что я делаю не так?
Спасибо
Может кто-нибудь сказать мне, что я делаю не так?
Просто о все.
-I=/home/tom/local/include
говорит GCC, чтобы посмотреть в =/home/tom/local/include
каталог, который вряд ли существует.
Ты хочешь:
g++ -I/home/tom/local/include rot13server.cpp -c
g++ -L/home/tom/local/lib rot13server.o -levent -o rot13server
Других решений пока нет …