Andy Dougherty wrote:
On Sun, 13 Apr 2008, James E Keenan wrote:
[snip]
/opt/SUNWspro/bin/CC -o miniparrot src/main.o \
-L/home/kid51/work/parrot/blib/lib -lparrot -lsocket -lnsl -ldl -lm
-lpthread -lrt -lgmp -lcrypto -L/usr/lib -L/usr/ccs/lib
-L/opt/SUNWspro/prod/lib/sparc -L/opt/SUNWspro/prod/lib -L/lib
-L/usr/local/lib -xlibmieee src/null_config.o
ld: fatal: library -lgmp: not found
ld: fatal: library -lcrypto: not found
ld: fatal: File processing errors. No output written to miniparrot
gmake: *** [miniparrot] Error 1
It's not clear why 'ld' failed to find gmp or crypto, because Configure.pl
located them without difficulty.
(Incidentally -- gmake is not necessary. I don't know why Configure.pl
suggests it.
DDMPK51: See this code from config/inter/make.pm:
# check the candidates for a 'make' program in this order:
# environment ; option ; probe ; ask ; default
# first pick wins. On cygwin prefer make over nmake.
$prog ||= $ENV{ uc($util) };
$prog ||= $conf->options->get($util);
$prog ||= check_progs( $^O eq 'cygwin' ? ['gmake', 'make'] :
['gmake', 'mingw32-make', 'nmake', 'make'], $verbose );
'gmake' wins where it's available.
You should try regular 'make' instead (you may have to
add /usr/ccs/bin to your PATH). If you want to check out parallel builds,
you can try 'dmake' if it's installed.)
This failure is probably due to the order of the arguments to CC.
Traditional Unix linkers look things up in the order specified on the
command line. You don't say where libgmp and libcrypto are installed, but
I'll guess they are in /usr/local/lib.
I'm beginning to suspect that this is a more general problem in our
configuration system. For example, problems we've been having recently
with config/auto/readline.pm, config/auto/gdbm.pm,
config/auto/crypto.pm. The presence of '-lgmp -lcrypto -L/usr/lib
-L/usr/ccs/lib' above in a situation where something didn't work is
reminiscent of '-lgdbm -L/sw/lib' in cases where, on Darwin, we've
installed a library with Fink and either can't locate it or have a
testing problem.
[snip]
1. Use rsync. rsync is very useful for this, when it works.
Unfortunately, the parrot rsync server tends to be a bit unreliable,
but it's working today. Use something like:
rsync -avz --delete svn.perl.org::parrot-HEAD parrot-current
(rsync is not standard on solaris -- you'd have to build your own.)
As I learned the hard way; goes on my Solaris TODO list.
[snip]
3. Fetch the current "snapshots" with something like
wget http://svn.perl.org/snapshots/parrot/parrot-latest.tar.gz
(wget is not standard on solaris -- you'd have to build your own.)
As I learned the hard way; goes on my Solaris TODO list.
[snip]
Thanks for the feedback. I suspect I'm going to have to set one
day/night a week to these Solaris problems, because it's more unlike
other *nix environments where I've worked.
kid51