添加所需库后使用 TShark C++ 源文件剖析消息时未定义的引用
Undefined reference when using TShark C++ source file to dissect a message after adding the required libraries
我想使用 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, 共享 个文件夹。)
打开 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);
}
...
...
...
/build/include/wireshark/epan/funnel.h
中的 initialize_funnel_ops()
函数给出了这个错误:
error: undefined reference to `initialize_funnel_ops'
其他一些函数也会出现此错误。
那我该如何解决呢?我应该添加一个新库吗?还是我在添加库和路径时出错了?
顶级 Wireshark CMakeLists.txt file should help you figure out what libraries and files tshark
needs. One of the dependencies is ${TSHARK_TAP_SRC}
, which includes ${CMAKE_SOURCE_DIR}/ui/cli/tap-funnel.c
, and tap-funnel.c 是定义 initialize_funnel_ops()
的文件。
我想使用 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, 共享 个文件夹。)打开 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);
}
...
...
...
/build/include/wireshark/epan/funnel.h
中的 initialize_funnel_ops()
函数给出了这个错误:
error: undefined reference to `initialize_funnel_ops'
其他一些函数也会出现此错误。
那我该如何解决呢?我应该添加一个新库吗?还是我在添加库和路径时出错了?
顶级 Wireshark CMakeLists.txt file should help you figure out what libraries and files tshark
needs. One of the dependencies is ${TSHARK_TAP_SRC}
, which includes ${CMAKE_SOURCE_DIR}/ui/cli/tap-funnel.c
, and tap-funnel.c 是定义 initialize_funnel_ops()
的文件。