> Ethereal doesn't use RPATH (see ld(1) for shared library linking on all
> platforms that support it (e.g. SGI IRIX, FreeBSD ELF, etc.), just
> Solaris it appears. Instead, ethereal recommends use of the
> LD_LIBRARY_PATH hack which causes all sorts problems.
>
> On SGI IRIX this is -rpath to the linker, on Solaris -R, on FreeBSD ELF
> --rpath, etc.
"--rpath" and LD_LIBRARY_PATH shouldn't be necessary on FreeBSD - the
run-time linker should be configured to search in the directory in which
libraries such as "-lgtk", "-lgdk", and "-lglib" live. On my FreeBSD
3.2 box, it is; I don't have LD_LIBRARY_PATH set, but Ethereal manages
to find those libraries in "/usr/local/lib".
For IRIX, "autoconf" should be fixed to use "-rpath" (i.e., this isn't
specific to Ethereal).
> __P not defined -- packet-snmp.c fails to build
> (gcc version 2.95.1 19990816 (release), SGI IRIX 6.5.5f)
>
> SOLUTION: Include gnuc.h -- it defines it
Does every system on which Ethereal can be built have "gnuc.h"? (Note
that if Ethereal requires GCC, this is arguably a deficiency....)
If I try to compile
% cat foo.c
#include "gnuc.h"
on my FreeBSD system, I get:
% gcc foo.c
foo.c:1: gnuc.h: No such file or directory
so it appears that on at least one system on which Ethereal can be
built, there's no "gnuc.h".
> Problem #2:
>
> gcc -DHAVE_CONFIG_H -I. -I. -I. -Wall -g -O2 -Iwiretap -I/home/rhh/software/gtk+-1.2.3/include -I/home/rhh/software/glib-1.2.3/lib/glib/include -I/home/rhh/software/glib-1.2.3/include -c packet-snmp.c
> In file included from packet-snmp.c:62:
> /usr/local/include/ucd-snmp/asn1.h:131: parse error before `__P'
> /usr/local/include/ucd-snmp/asn1.h:132: parse error before `__P'
> /usr/local/include/ucd-snmp/asn1.h:133: parse error before `__P'
> /usr/local/include/ucd-snmp/asn1.h:134: parse error before `__P'
> /usr/local/include/ucd-snmp/asn1.h:135: parse error before `__P'
That's a problem with the UCD SNMP library as installed on your system;
it shouldn't require that you include "gnuc.h" - either it should avoid
using "__P()" on systems that don't provide it, or it should declare
"__P()" itself.