Неопределенная ссылка на ‘event_base_del_virtual’ при компиляции примера контроллера libfluid

Я пытаюсь использовать libfluid для кодирования моего собственного контроллера OpenFlow. Но сначала я хочу построить контроллер образца чтобы понять, как это работает.
Я получил следующую ошибку при компиляции примера контроллера: (это ошибка, которую я получил при попытке make msg_controller)

c++ msg/MsgController.cc -lfluid_msg -lfluid_base -I. -O3 -std=c++0x -o msg_controller
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libfluid_base.so: undefined reference to `event_base_del_virtual'
/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libfluid_base.so: undefined reference to `event_base_add_virtual'
collect2: error: ld returned 1 exit status
Makefile:10: recipe for target 'msg_controller' failed
make: *** [msg_controller] Error 1

Прежде чем создавать образец контроллера, я следую меры строить libfluid_base а также libfluid_msg, При построении этих двух библиотек я получил следующую подсказку, которая, я думаю, может помочь решить мою проблему

Если вам когда-нибудь захочется создать ссылку на установленные библиотеки
в данном каталоге, LIBDIR, вы должны либо использовать libtool, и
укажите полный путь к библиотеке или используйте ‘-LLIBDIR’
пометить во время связывания и выполнить хотя бы одно из следующих действий:

  • добавить LIBDIR в переменную окружения ‘LD_LIBRARY_PATH’
    во время исполнения
  • добавить LIBDIR в переменную окружения ‘LD_RUN_PATH’
    во время ссылки
  • используйте флаг компоновщика ‘-Wl, -rpath -Wl, LIBDIR’
  • попросите вашего системного администратора добавить LIBDIR в /etc/ld.so.conf

Смотрите любую документацию по операционной системе об общих библиотеках для
дополнительная информация, такая как справочные страницы ld (1) и ld.so (8).

Ошибка неопределенной ссылки, потому что библиотека неправильно связывается?
Нужно ли внести некоторые изменения в команду c ++?

Я попробовал команду grep -rn "event_base_del" /usr/lib а также grep -rn "event_base_add" /usr/lib

Выход для event_base_del ниже (то же самое для event_base_add)

Binary file /usr/lib/libfluid_base.a matches
Binary file /usr/lib/libfluid_base.so.0.0.0 matches
Binary file /usr/lib/x86_64-linux-gnu/libevent.a matches
Binary file /usr/lib/x86_64-linux-gnu/libevent-2.1.so.6.0.2 matches
Binary file /usr/lib/x86_64-linux-gnu/libevent_core.a matches
Binary file /usr/lib/x86_64-linux-gnu/libevent_core-2.1.so.6.0.2 matches

Значит ли это, что он правильно связывает? поскольку libfluid_base.so это просто ссылка на libfluid_base.so.0.0.0

lrwxrwxrwx  1 root root       22 Oct  8 09:36 libfluid_base.so -> libfluid_base.so.0.0.0

Так как я могу это исправить?

После того, как я попытался использовать -levent_core или -levnet, чтобы получить пример кода с libevent. Ошибка продолжает существовать, возможно, потому, что используемая мной сейчас версия libevent несовместима с текущей версией libfluid. Кстати, я использую Ubuntu18.04.

Я постараюсь собрать его на Ubuntu16.04 с более старой версией libevent и посмотреть, работает ли он.

0

Решение

event_base_del_virtual происходит от библиотека ливент. Свяжите это с -levent_core,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]