在C ++中构建完全独立的Wireshark解剖器模块

时间:2019-06-25 14:02:24

标签: c++ shared-libraries wireshark wireshark-dissector

我想构建一个独立的Wireshark解剖器模块,我可以在诸如Android的各种平台(使用NDK)上对其进行重新编译和使用。

为此,我选择了一些Wireshark源文件并应用了更改。现在,我有一个完整的C和C ++模块,可以在Qt ide和Ubuntu中用C ++编译器编译,它本身由一系列.h和.cpp文件(具有我的自定义更改)以及一系列.h和.cpp组成。我从头开始写的文件。

此模块链接到大量Wireshark头文件以及三个Wireshark库,即libwireshark.so和libwiretap.so和libwsutil.so,我将所需的头文件放在一个文件夹中,并将库放在另一个文件夹中并将它们放置在项目旁边,项目将正确执行。由于该模块基于Wireshark,因此它还具有对glib和Ubuntu中已经可用的其他库的某些依赖关系。这些库包括以下命令ldd myApp

linux-vdso.so.1 (0x00007ffcaccf8000)
libwireshark.so.7 => /usr/local/lib/libwireshark.so.7 (0x00007f7d6f561000)
libwsutil.so.6 => /usr/local/lib/libwsutil.so.6 (0x00007f7d6f33e000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7d6efb5000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7d6ed9d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7d6e9ac000)
liblua5.2.so.0 => /usr/lib/x86_64-linux-gnu/liblua5.2.so.0 (0x00007f7d6e77a000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f7d6e45f000)
libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f7d6e0fa000)
libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f7d6de24000)
libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f7d6dbf2000)
libwiretap.so.5 => /usr/local/lib/libwiretap.so.5 (0x00007f7d6d90f000)
libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f7d6d70b000)
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f7d6d3f5000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f7d6d1d8000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7d6ce3a000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7d6cc1b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7d743f9000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7d6ca17000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f7d6c802000)
libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f7d6c4d3000)
libidn2.so.0 => /usr/lib/x86_64-linux-gnu/libidn2.so.0 (0x00007f7d6c2b6000)
libunistring.so.2 => /usr/lib/x86_64-linux-gnu/libunistring.so.2 (0x00007f7d6bf38000)
libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f7d6bd25000)
libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00007f7d6baef000)
libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007f7d6b8bb000)
libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f7d6b63a000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f7d6b436000)
libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f7d6b22b000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f7d6b027000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f7d6ae0c000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f7d6ab9a000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f7d6a992000)

正如我在问题开始时所说的那样,我的目标是使该模块完全独立,并能够在诸如Android之类的其他平台上重新编译和使用。现在,我的问题是,是否通过将所有这些库放在项目旁边的顶部而产生这种独立性?如果没有,解决方案是什么?是否有类似的程序可以获取帮助(例如Signal guru,但这不是开源的?)?

0 个答案:

没有答案