我想使用TShark源文件在C ++中解析一条消息(例如rrc sib 3消息)。我已完成以下步骤:
wireshark-2.6.6.tar.xz
并转到提取的文件夹。sudo ./configure --prefix=/home/***/build/
sudo make -j 8
sudo make install
(之后,我有一个 build 文件夹,其中包含 bin , include , lib , share < / em>文件夹。)打开C ++ ide(Qt)并添加以下库:
LIBS += -L/home/***/build/lib/ -lwireshark \
-L/home/***/build/lib/ -lwiretap \
-L/home/***/build/lib/ -lwsutil \
-L/home/***/build/lib/ -lwscodecs
我当然包括这样的路径:
INCLUDEPATH += /home/***/build/include/wireshark
DEPENDPATH += /home/***/build/include/wireshark
还有我在步骤1中下载的wireshark源文件夹:
INCLUDEPATH += /home/***/wireshark-2.6.6
DEPENDPATH += /home/***/wireshark-2.6.6
在Qt中打开TShark.c文件(/ home / *** / wireshark-2.6.6 / tshark.c)。
完成这些步骤之后,似乎一切都应该没问题,但是我对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'
此错误也会导致其他一些功能。
那我该如何解决呢?我应该添加一个新的图书馆吗?还是在添加库和路径时犯了错误?
答案 0 :(得分:1)
顶级Wireshark CMakeLists.txt文件应帮助您确定tshark
需要哪些库和文件。依赖项之一是${TSHARK_TAP_SRC}
,其中包括${CMAKE_SOURCE_DIR}/ui/cli/tap-funnel.c
,tap-funnel.c是定义了initialize_funnel_ops()
的文件。