Nmap Development mailing list archives

Re: trouble compiling 3.25 on Solaris 9


From: Bernd Zeimetz <zeimetz () rbg informatik tu-darmstadt de>
Date: Wed, 23 Apr 2003 21:01:09 +0200 (MEST)

Hi,

 /usr/ccs/bin/as -V -Qy -s -o /var/tmp//ccVVEC7u.o /var/tmp//cc2viA9P.s
/usr/ccs/bin/as: Sun WorkShop 6 update 2 Compiler Common 6.2 Solaris_9_CBE
2001/04/02
 /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.2.2/collect2 -V -Y P,/usr/ccs/lib:/usr/lib
-Qy /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.2.2/crt1.o /usr/local/lib/gcc-
lib/sparc-sun-solaris2.9/3.2.2/crti.o /usr/ccs/lib/values-Xa.o /usr/local/lib/gcc-
lib/sparc-sun-solaris2.9/3.2.2/crtbegin.o -L/usr/local/lib/gcc-lib/sparc-
sun-solaris2.9/3.2.2 -L/usr/ccs/bin -L/usr/ccs/lib -L/usr/local/lib/gcc-
lib/sparc-sun-solaris2.9/3.2.2/../../.. /var/tmp//ccVVEC7u.o -lgcc -lgcc_eh
-lc -lgcc -lgcc_eh -lc /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.2.2/crtend.o
/usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.2.2/crtn.o

hmm, there should be something like
-R /usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2

From my gcc:

/usr/ccs/bin/as: Sun WorkShop 6 99/08/18
 /usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2/collect2 -V -Y P,/usr/ccs/lib:/usr/lib -R 
/usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2 -Qy 
/usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2/crt1.o 
/usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2/crti.o /usr/ccs/lib/values-Xa.o 
/usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2/crtbegin.o 
-L/usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.7/3.2 -L/usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2 
-L/usr/ccs/bin -L/usr/ccs/lib -L/usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2/../../.. /var/tmp//cc8kjQua.o 
-lgcc -lgcc_eh -lc -lgcc -lgcc_eh -lc /usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2/crtend.o 
/usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2/crtn.o


/tmp>cat > foo.c
int main() {

return 0;
}
/tmp>gcc foo.c -lstdc++
/tmp>ldd -s a.out

   find object=libstdc++.so.5; required by a.out
    search path=/usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2  (RPATH
from file a.out)
    trying path=/usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solaris2.8/3.2/libstdc+
+.so.5
        libstdc++.so.5 =>        /usr/local/lib/gcc/lib/gcc-lib/sparc-sun-solari
s2.8/3.2/libstdc++.so.5

[...]


Ok, from your first mail (sorry, didn't read that before ;-)

but my LDFLAGS is set to -L/usr/local/lib and libstdc++.so.5 is soft
linked to libstdc++.so.5.0.2, which is there and readable by root, which
is what I'm compiling as.

So your compiler look for libstdc++.so.5 in /usr/local/lib at linking time.
But your executable doesn't know how to find the lib.
The runtime library search path should also point to /usr/local/lib, so
use
LDFLAGS='-L/usr/local/lib -R/usr/local/lib'

Solaris doesn't have an /etc/ld.so.conf like Linux to provide
a lib. search path. You have to use -R or add the flags to your
compiler specs. -R/path under Solaris is the same as
-Wl,-rpath,/path under Linux.


Bernd


-- 

  Bernd Zeimetz  - DH4PH -               Tel.: +49 (0)6151 16-4333
  RechnerBetriebsGruppe               Raum: S1/13 11a (alt 25/11a)
  Fachbereich Informatik         Technische Universitaet Darmstadt

---------------------------------------------------------------------
For help using this (nmap-dev) mailing list, send a blank email to 
nmap-dev-help () insecure org . List run by ezmlm-idx (www.ezmlm.org).



Current thread: