forked from osmocom/wireshark
5d2ae3a081
Suggest that the user completely clean out their build trees and start from scratch after an OS major version upgrade. (That might well be a good idea on *all* UN*Xes.) Note some issues that show up with support libraries on Snow Leopard due to builds being 64-bit by default (and note that you *get* a 64-bit Wireshark by default). svn path=/trunk/; revision=31328
148 lines
6.6 KiB
Text
148 lines
6.6 KiB
Text
$Id$
|
|
|
|
This file tries to help building Wireshark for Mac OS X (Wireshark does
|
|
not work on earlier versions of Mac OS).
|
|
|
|
In order to build Wireshark, you must have X11 and the X11 developer
|
|
headers and libraries installed; otherwise, you will not be able to
|
|
build or install GTK+, and will only be able to build TShark. The X11
|
|
and X11 SDK that come with Mac OS X releases starting with Panther are
|
|
sufficient to build and run Wireshark.
|
|
|
|
The changes to enable libwiretap and libwireshark being built as shared
|
|
libraries have broken shared gtk1 builds on Mac OS X. The GLib 1.x and
|
|
GTK+ 1.x release tarballs were built with an older version of libtool
|
|
that didn't support shared libraries on Mac OS X, so you can't build and
|
|
install them as shared libraries, but the shared-library build of
|
|
Wireshark requires GLib and GTK+, on Mac OS X, to be shared libraries.
|
|
The alternative to build Wireshark as one big statically linked binary
|
|
isn't working either (and may never have worked on this OS).
|
|
|
|
The way out of this situation is to use gtk2 and associated libraries
|
|
which is known to work in this constellation:
|
|
|
|
GLib 2.4.0
|
|
Pango 1.4.0
|
|
GTK+ 2.4.0
|
|
ATK 1.6.0
|
|
|
|
and the corresponding dependency, which you can download from the
|
|
"dependencies" subdirectory of the GTK+ download directory on the GTK+
|
|
FTP site:
|
|
|
|
pkg-config
|
|
|
|
as well as GNU gettext, which isn't included in the directory of
|
|
dependencies on the GTK+ FTP site.
|
|
|
|
GTK+ can also be configured to include code to load various sorts of
|
|
images. To do so, you would also need the following dependencies, also
|
|
available from the "dependencies" subdirectory of the GTK+ download
|
|
directory:
|
|
|
|
jpegsrc
|
|
libpng
|
|
tiff
|
|
|
|
However, on Tiger and later releases, it appears that the libraries
|
|
built and installed by those packages collide with libraries that come
|
|
with the OS, so you might have to configure GTK+ not to support loading
|
|
those images (Wireshark doesn't use the ability to load JPEG, PNG, or
|
|
TIFF images), by using the "--without-libpng", "--without-libjpeg", and
|
|
"---without-libtiff" flags when running "configure" in the GTK+ source
|
|
directory.
|
|
|
|
NOTE: you must set the PKG_CONFIG_PATH environment variable to include
|
|
"/usr/X11R6/lib/pkgconfig" (unless you've already set it, set it to
|
|
"/usr/X11R6/lib/pkgconfig") before running the Pango configuration
|
|
script, so that it can be configured to use the version of fontconfig
|
|
that comes with Mac OS X's X11. This is also needed for the GTK+
|
|
configuration.
|
|
|
|
NOTE: you must install the pkg-config dependency first; unless it is
|
|
installed, you cannot configure GLib or GTK+. After that, you must
|
|
install GNU gettext; only after both of those have been built and
|
|
installed will you be able to configure GLib. After configuring and
|
|
installing GLib, configure, build, and install Pango, ATK, jpegsrc,
|
|
libpng, tiff, and GTK+, in order. (The exact order might not be
|
|
important, but you must configure, build, and install Pango and ATK
|
|
before configuring GTK+ and, if you want GTK+ to be able to use the
|
|
capabilities from the other libraries, you must configure, build, and
|
|
install them before configuring GTK+.)
|
|
|
|
You will need to do "make install-lib" for the JPEG library to install
|
|
its libraries - "make install" does not suffice. You will also have to
|
|
do "sudo ranlib /usr/local/lib/libjpeg.a" after "make install-lib".
|
|
|
|
For libpng, use scripts/makefile.darwin, not scripts/makefile.macosx.
|
|
|
|
Finally run the configure script. By default it will use
|
|
the GLib2 and GTK+2 libraries. If you run Wireshark's configure script
|
|
with the "--disable-gtk2" argument it'll try to configure with GLib
|
|
1.2[.x] and GTK+ 1.2[.x], in which case:
|
|
|
|
if they're not installed, the configure script will fail;
|
|
|
|
if they are installed, the configure script will configure
|
|
Wireshark to build with them.
|
|
|
|
If you upgrade the major release of Mac OS X on which you are building
|
|
Wireshark, we advise that, before you do any builds after the upgrade,
|
|
you do, in the build directory:
|
|
|
|
If you are building from a release tarball:
|
|
make distclean
|
|
|
|
If you are building from SVN:
|
|
make maintainer-clean
|
|
./autogen.sh
|
|
|
|
Then re-run the configure script and rebuild from scratch.
|
|
|
|
On Snow Leopard, if you are building on a machine with a 64-bit
|
|
processor (with the exception of the early Intel Core Duo and Intel Core
|
|
Solo machines, all Apple machines with Intel processors have 64-bit
|
|
processors), the C/C++/Objective-C compiler will build 64-bit by
|
|
default.
|
|
|
|
This means that you will, by default, get a 64-bit version of Wireshark.
|
|
|
|
One consequence of this is that, if you built and installed any required
|
|
or optional libraries for Wireshark on an earlier release of Mac OS X,
|
|
those are probably 32-bit versions of the libraries, and you will need
|
|
to un-install them and rebuild them on Snow Leopard, to get 64-bit
|
|
versions.
|
|
|
|
Some required and optional libraries require special attention if you
|
|
install them by building from source code on Snow Leopard:
|
|
|
|
GLib - the GLib configuration script determines whether the system's
|
|
libiconv is GNU iconv or not by checking whether it has libiconv_open(),
|
|
and the compile will fail if that test doesn't correctly indicate
|
|
whether libiconv is GNU iconv. In Mac OS X, libiconv is GNU iconv, but
|
|
the 64-bit version doesn't have libiconv_open(); a workaround for this
|
|
is to replace all occurrences of "libiconv_open" with "iconv_open" in
|
|
the configure script before running the script.
|
|
|
|
libgcrypt - the libgcrypt configuration script attempts to determine
|
|
which flavor of assembler-language routines to use based on the platform
|
|
type determined by standard autoconf code. That code uses uname to
|
|
determine the processor type; however, in Mac OS X, uname always reports
|
|
"i386" as the processor type on Intel machines, even Intel machines with
|
|
64-bit processors, so it will attempt to assemble the 32-bit x86
|
|
assembler-language routines, which will fail. The workaround for this
|
|
is to run the configure script with the --disable-asm argument, so that
|
|
the assembler-language routines are not used.
|
|
|
|
PortAudio - when compiling on Darwin (e.g., on Mac OS X), the configure
|
|
script for the pa_stable_v19_20071207 version of PortAudio will cause
|
|
certain platform-dependent build environment #defines to be set in the
|
|
Makefile rules, and to cause a universal build to be done; those
|
|
#defines will be incorrect for all but one of the architectures for
|
|
which the build is being done, and that will cause a compile-time error
|
|
on Snow Leopard. The current snapshot version of PortAudio still
|
|
defines those values in the Makefile, but it appears to use them in ways
|
|
that don't cause build problems; its configure script also has a
|
|
"--disable-mac-universal" flag that can cause the build not to be done
|
|
universal.
|