----- Original Message -----
Sent: Thursday, February 28, 2002 11:03
AM
Subject: Failure to build shared
libraries on Solaris7
It seems that gcc 2.8.1 is passing the
wrong arguments to LD to build shared libraries
for openssl-0-9-6a on Solaris
7
$ make
report
Checking compiler...
ar: creating cctest.a
+ rm -f
libcrypto.so
+ rm -f libcrypto.so.0
+ rm -f libcrypto.so
+ rm -f
libcrypto.so.0.9.6
+ rm -f libssl.so.0
+ rm -f libssl.so
+ rm -f
libssl.so.0.9.6
making all in crypto...
making all in
crypto/md2...
making all in crypto/md4...
making all in
crypto/md5...
making all in crypto/sha...
making all in
crypto/mdc2...
making all in crypto/hmac...
making all in
crypto/ripemd...
making all in crypto/des...
making all in
crypto/rc2...
making all in crypto/rc4...
making all in
crypto/rc5...
making all in crypto/bf...
making all in
crypto/cast...
making all in crypto/bn...
making all in
crypto/rsa...
making all in crypto/dsa...
making all in
crypto/dh...
making all in crypto/dso...
making all in
crypto/buffer...
making all in crypto/bio...
making all in
crypto/stack...
making all in crypto/lhash...
making all in
crypto/rand...
making all in crypto/err...
making all in
crypto/objects...
making all in crypto/evp...
making all in
crypto/asn1...
making all in crypto/pem...
making all in
crypto/x509...
making all in crypto/x509v3...
making all in
crypto/conf...
making all in crypto/txt_db...
making all in
crypto/pkcs7...
making all in crypto/pkcs12...
making all in
crypto/comp...
making all in ssl...
making all in rsaref...
making
all in apps...
making all in test...
making all in tools...
+ rm -f
libcrypto.so.0
+ rm -f libcrypto.so
+ rm -f
libcrypto.so.0.9.6
libs='-L. '; for i in crypto; do \
( set -x;
gcc -shared -o lib$i.so.0.9.6
\
-Wl,-S,-soname=lib$i.so.0.9.6
\
-Wl,--whole-archive lib$i.a
\
-Wl,--no-whole-archive $libs
-lsocket -lnsl -ldl -lc ) || exit 1; \
libs="$libs -l$i"; \
done
+
gcc -shared -o libcrypto.so.0.9.6 -Wl,-S,-soname=libcrypto.so.0.9.6
-Wl,--whol
e-archive libcrypto.a -Wl,--no-whole-archive -L. -lsocket -lnsl
-ldl -lc
/usr/ccs/bin/ld: illegal option -- -
/usr/ccs/bin/ld: illegal
option -- w
/usr/ccs/bin/ld: illegal option -- -
/usr/ccs/bin/ld:
illegal option -- n
ld: warning: option -o appears more than once, first
setting taken
usage: ld [-abd:e:f:h:il:mo:rstu:z:B:D:F:GI:L:M:N:Q:R:S:VY:]
file(s)
[-a] create
an absolute file
[-b] do not
do special PIC relocations in
a.out
[-d
y|n] operate in dynamic|static
mode
[-e
sym] use `sym' as entry point
address
[-f
name] specify library for which this file
is an
auxiliary
filter
[-h
name] use `name' as internal shared object
identifier
[-i] ignore
LD_LIBRARY_PATH setting
[-l
x] search for libx.so or
libx.a
[-m] print
memory map
[-o
outfile] name the output file
`outfile'
[-r] create
a relocatable object
[-s] strip
any symbol and debugging
information
[-t] do not
warn of multiply defined symbols of
different
sizes
[-u
sym] create an undefined symbol
`sym'
[-z
absexec] when building an exectutable absolute symbols
referenced
in dynamic objects are
promoted to the
executable.
[-z
now] mark object as requiring
non-lazy binding
[-z
defs|nodefs]
disallow|allow undefined symbols
[-z direct] specify 'direct' bindings for executable
when run
[-z
groupperm|nogroupperm]
enable|disable setting of GROUP
permissions
on dynamic dependencies
[-z
ignore|record]
ignore|record unused dynamic
dependencies
[-z
initfirst] mark object so the .init
section
of this object is executed before the .init
section
of other objects
[-z
loadfltr] mark filter as requiring immediate loading of
its
filtees at runtime
[-z
interpose]
dynamic object is to be an `interposer'
on
direct bindings
[-z
lazyload|nolazyload]
enable|disable delayed loading of shared
objects
[-z
muldefs] allow multiply defined
symbols
[-z
nodelete] mark object as
non-deletable
[-z
nodlopen] mark object as
non-dlopen()'able
[-z
noversion] don't record any version
sections
[-z
origin] mark object as requiring $ORIGIN
processing
[-z redlocsym]
reduce local syms in .symtab to a
minimum
[-z
text] disallow output relocations against
text
[-z textwarn]
warn if there are relocations against
text
[-z
textoff] allow output relocations against
text
[-z
weakextract]
allow extraction of archive members to resolve
weak
references
[-z allextract]
extract all member files from archive
files
[-z
defaultextract]
extract member files from archive
files
which resolve undefined or tentative
symbols
[-z combreloc]
combine multiple relocation
sections
[-B
dynamic|static]
search for shared
libraries|archives
[-B
group] relocate object from within
group
[-B eliminate]
eliminate unqualified
global
symbols from the symbol table
[-B local] reduce unqualified global symbols to
local
[-B
reduce] process symbol
reductions
[-B
symbolic] bind external references to definitions when
creating
shared objects
[-B
direct] specify 'direct' bindings for executable when
run
[-B translator] specify that
this object is to act as a
'translator'
for an application bound with
-Bdirect
[-D
options] print diagnostic
messages
[-F
name] specify library for which this file
is a filter
[-G] create
a shared object
[-I
interp] use `interp' as path name of
interpreter
[-L
path] search for libraries in directory
`path'
[-M
mapfile] use processing directives contained in
`mapfile'
[-N
file] create a dynamic dependency on
`file'
[-Q
y|n] do|do not place version
information in output file
[-R
path] specify a library search path to be
used at run time
[-S
name] specify a link-edit support
library
[-V] print
version information
[-Y
P,dirlist] use `dirlist' as a default path when searching
for
libraries
*** Error code 1
make: Fatal error: Command failed for target
`do_gnu-shared'
OpenSSL self-test report:
OpenSSL version:
0.9.6b
Barry A Byrne
Cable and Wireless
Global