Неопределенная ссылка при использовании исходного файла TShark C ++ для анализа сообщения после добавления необходимых библиотек - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу использовать исходные файлы TShark для разбора сообщения (например, rrc sib 3 message) в C ++.Я сделал следующие шаги:

  1. Загрузите wireshark-2.6.6.tar.xz и перейдите в извлеченную папку.
  2. sudo ./configure --prefix=/home/***/build/
  3. sudo make -j 8
  4. sudo make install (После этого у меня есть папка build , которая содержит bin , include , lib , share папки.)
  5. Откройте C ++ ide (Qt) и добавьте следующие библиотеки:

     LIBS += -L/home/***/build/lib/ -lwireshark \
            -L/home/***/build/lib/ -lwiretap \
            -L/home/***/build/lib/ -lwsutil \
            -L/home/***/build/lib/ -lwscodecs
    
  6. Конечно, я включаю путь следующим образом:

     INCLUDEPATH += /home/***/build/include/wireshark
     DEPENDPATH += /home/***/build/include/wireshark
    
  7. А также папка с исходным кодом wireshark, которую я скачал в шаге 1:

    INCLUDEPATH += /home/***/wireshark-2.6.6
    DEPENDPATH += /home/***/wireshark-2.6.6
    
  8. Откройте файл TShark.c (/home / *** / wireshark-2.6.6 / tshark.c) в Qt.

После этих шагов кажется, что все должно быть в порядке, но у меня есть неопределенная ссылка наоколо 70 функций, которые я думаю, что я должен добавить некоторые другие библиотеки на шаге 5.

Часть моего кода (tshark.c) выглядит следующим образом:

...
...
...
static int
real_main(int argc, char *argv[])
{
   ...
   initialize_funnel_ops();
   return exit_status;
}
int
main(int argc, char *argv[])
{
   return real_main(argc, argv);
}
...
...
...

Функция initialize_funnel_ops()который в /build/include/wireshark/epan/funnel.h дает эту ошибку:

error: undefined reference to `initialize_funnel_ops'

Эта ошибка появляется для некоторых другихЭто тоже функции.

Так как я могу это решить?Должен ли я добавить новую библиотеку?Или я ошибся при добавлении библиотек и пути?

1 Ответ

0 голосов
/ 25 февраля 2019

Файл верхнего уровня Wireshark CMakeLists.txt должен помочь вам выяснить, какие библиотеки и файлы нужны tshark.Одна из зависимостей: ${TSHARK_TAP_SRC}, которая включает ${CMAKE_SOURCE_DIR}/ui/cli/tap-funnel.c, а tap-funnel.c - файл, в котором определено initialize_funnel_ops().

...