I’m sure that others may not agree with this approach, but… Although there are no guarantees of compatibility between
versions, I have found that there are usually not problems. Using my method you
could build the core of a version of Wireshark and send it to them. They could
use the same method to compile your plugin, and then use the plugin with their
(possibly different) version of Wireshark. The thing that will cause problems is using a different version
of compile tools. The ones that I use (in my scripts, below) is the version
currently used to distribute Wireshark (1.2.0pre2), and so the plugins can be
used with the “downloaded” Wireshark. This would likely work if the versions were “close”.
I found that even my 1.0.6 plugins ran with 1.2.0pre2, although I didn’t
thoroughly test them. From:
wireshark-dev-bounces@xxxxxxxxxxxxx
[mailto:wireshark-dev-bounces@xxxxxxxxxxxxx] On Behalf Of Jonathan
Walker (c) I know there’s much more than libwireshark.lib that the
compiler needs to compile the plugins (the headers, the glib libraries,
makefiles, etc). So, is there a way to supply all the NEEDED files for
somebody else who (may be running a different version of WS but) would like to
also compile my plug-in, without them having to download the source also?
So, maybe I could supply all the headers and glib files etc., and all they
would have to do would be to change the libwireshark so that the versions of
the plug-in and WS match up after the user compiles the plug-in? After reading your response, I guess what I’m trying to do is
not possible yet. I’m just re-wording to make sure that if it
really is a lost cause, at least I’m certain it isn’t possible. Thank you, J. Walker From:
wireshark-dev-bounces@xxxxxxxxxxxxx
[mailto:wireshark-dev-bounces@xxxxxxxxxxxxx] On Behalf Of Bryant Eastham Forgive the top-post and long response. Unless things have changed, Wireshark does not directly support
an “SDK” for plugins, or building them against anything but source.
It is one of my pet-peeves, since plugins are all I ever produce. Since this
may be useful for others, I can share what I do – it may highlight the
difficulties and prompt the creation of an SDK, or somebody may correct my
methods in ways that I have not seen. First, I check my plugins into source control, putting them in a
plugins directory just like I would if they were part of the Wireshark
distribution. In that same directory I maintain my own Makefile.am and
Makefile.nmake by copying the standard ones and then removing the standard
plugins references and including my own. Other than those changes, my plugin
source is equivalent to what it would be if it was included in the
distribution. Next, I download the Wireshark source code into a directory
parallel to my plugins directory. In partial answer to your original question,
there is much more than just a reference to the .lib file that is required to
compile a plugin. Many (I would argue too many) of the Wireshark header files
are required. Worse, there is no differentiation between “SDK”
headers and “Standard” headers, so you really have to have access
to all of them. Finally, I have a set of custom support files that I have
created that will “build” Wireshark and then “build” my
plugins. I put these in another parallel directory called
“build-tools”, and it goes into source control along with my
plugins. I am willing to share them with whoever wants to see them, but many of
them are specific to our build process (linux and cygwin). The main trick is to
get Wireshark to build just what is needed to get a plugin to compile. On Windows, I create the following batch file (meant to execute
in the Wireshark directory): call "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" @echo on set MSVC_VARIANT=MSVC2008 nmake /e /f ..\build-tools\Makefile.nmake sdk The referenced Makefile.nmake file is just: include Makefile.nmake sdk: setup config.h image wsutil $(ADNS_DLL) tshark.exe This is really just a hack to add a target to the Wireshark
Makefile. On Windows, building tshark is the best way to get things prepped to
build plugins, however, I have found the dependencies of the Wireshark Makefile
do not really support just building tshark and so the other dependencies need
to be listed. This is one area where I think Wireshark could benefit plugin
developers – by defining an SDK target in the Makefiles that just builds
what you need to get the plugins to compile. On Linux, things are a little better. The following script works
for me although the path references likely make it unusable by others (meant to
execute in the Wireshark directory): #!/bin/bash PATH=$PATH:/usr/local/bin source /etc/profile.d/gtk2.sh source /etc/profile.d/python.sh PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/opt/kde3/lib/pkgconfig:/opt/gnome/lib/pkgconfig:/opt/gnome/share/pkgconfig ./autogen.sh ./configure --disable-wireshark make Once this process is complete, you have what I would call an
“SDK” of Wireshark. In fact, I archive the Wireshark directory at
this point in our build system, and it only rebuilds if I change versions of
Wireshark. Normally, I check out my plugins and then extract the previously
built Wireshark into the same directory. To build the plugins, I delete the Wireshark plugins directory
and copy mine in its place. I then have a patchfile that I apply to
configure.in, removing the standard plugins and putting in my own. Then, on Windows, I execute the following in the Wireshark
directory: call "C:\Program Files\Microsoft Visual Studio
9.0\VC\bin\vcvars32.bat" @echo on set MSVC_VARIANT=MSVC2008 nmake /e /f ..\build-tools\Makefile.nmake plugins if ERRORLEVEL 1 exit %ERRORLEVEL% cd plugins nmake /e /f Makefile.nmake install-plugins exit %ERRORLEVEL% On Linux: #!/bin/bash PATH=$PATH:/usr/local/bin source /etc/profile.d/gtk2.sh source /etc/profile.d/python.sh PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/opt/kde3/lib/pkgconfig:/opt/gnome/lib/pkgconfig:/opt/gnome/share/pkgconfig cd wireshark/plugins make While a little convoluted, this process has shown to be fairly
resilient to changes in Wireshark. In particular my patching of the
configure.in file triggers an automatic reconfig of the source, but not a
recompile. This process has meant that we can use continuous integration on our
Wireshark plugins, with the compile times of just a few minutes to rebuild all
13 of our plugins on both Windows and Linux. That compares to almost 30 minutes
to rebuild Wireshark. This whole process would be much improved with just a few minor
tweaks to the Wireshare files, but I have not gotten around to submitting
anything. Sorry for the long post. I know you didn’t ask for most of
the detail, but based on your question I assume that you will run in to all of
the issues that I have while trying to do what you asked about. -Bryant From:
wireshark-dev-bounces@xxxxxxxxxxxxx
[mailto:wireshark-dev-bounces@xxxxxxxxxxxxx] On Behalf Of Jonathan
Walker (c) Hello,
I noticed that actual release versions of wireshark that can be downloaded
online do not include a libwireshark.lib file, but they do include a
libwireshark.dll. Does this mean that the only possible way to compile a
wireshark plugin is by compiling all of wireshark source first? Or, is
there a way to map the Makefile.nmake as follows: LINK_PLUGIN_WITH=..\..\epan\libwireshark.dll so
that this may also work. I’ve tried this, although it does not
successfully compile my plugin. Is there a way to do this? Thank
you, J.
Walker |
- Follow-Ups:
- Re: [Wireshark-dev] compile using libwireshark.dll
- From: Jonathan Walker (c)
- Re: [Wireshark-dev] compile using libwireshark.dll
- References:
- [Wireshark-dev] compile using libwireshark.dll
- From: Jonathan Walker (c)
- Re: [Wireshark-dev] compile using libwireshark.dll
- From: Bryant Eastham
- Re: [Wireshark-dev] compile using libwireshark.dll
- From: Jonathan Walker (c)
- [Wireshark-dev] compile using libwireshark.dll
- Prev by Date: Re: [Wireshark-dev] compile using libwireshark.dll
- Next by Date: Re: [Wireshark-dev] ChmodBPF problem - Fixed!
- Previous by thread: Re: [Wireshark-dev] compile using libwireshark.dll
- Next by thread: Re: [Wireshark-dev] compile using libwireshark.dll
- Index(es):