使用TSHARK C 源文件时未定义的参考在添加所需库后剖析消息

Undefined reference when using TShark C++ source file to dissect a message after adding the required libraries

本文关键字:消息 添加 源文件 TSHARK 未定义 参考 使用      更新时间:2023-10-16

我想使用tshark源文件在C 中剖析消息(例如RRC SIB 3消息)。我做了以下步骤:

  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 共享文件夹。)
  5. 打开C IDE(QT)并添加以下libs:

     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. 以及我在步骤1中下载的Wireshark源文件夹:

    INCLUDEPATH += /home/***/wireshark-2.6.6
    DEPENDPATH += /home/***/wireshark-2.6.6
    
  8. 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);
}
...
...
...

/build/include/wireshark/epan/funnel.h中的initialize_funnel_ops()函数给出了此错误:

error: undefined reference to `initialize_funnel_ops'

此错误也适用于其他一些功能。

那么我该如何解决?我应该添加一个新图书馆吗?或者我在添加库和路径时犯了一个错误?

顶级Wireshark cmakelists.txt文件应帮助您弄清楚哪些库和文件tshark需求。依赖项之一是${TSHARK_TAP_SRC},其中包括${CMAKE_SOURCE_DIR}/ui/cli/tap-funnel.c,Tap-funnel.c是定义initialize_funnel_ops()的文件。