libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Shared libraries build on Linux, not on Solaris 10 (gcc)


From: Jason Curl
Subject: Re: Shared libraries build on Linux, not on Solaris 10 (gcc)
Date: Fri, 17 Aug 2007 01:09:49 +0200
User-agent: Thunderbird 2.0.0.6 (Windows/20070728)

Bad posting to my own posts so soon. But I've tried a few other systems I have at hand.

Jason Curl wrote:
Hello,

I've just switched over to using libtool instead of using static libraries. I've installed autoconf-2.61, automake-1.10 and libtool-1.5.24.

The library builds fine under Linux, but won't link under Solaris Sparc 2.10.

/bin/bash ../../libtool --tag=CC --mode=link /opt/sfw/bin/gcc -DSYSCONFDIR=\"/usr/local/etc\" -O0 -g -Wall -version-info 0:0:0 -lnsl -lsocket -lcurses -o liblogger.la -rpath /usr/local/lib console.lo file.lo output.lo profile.lo queue.lo serial.lo strfunc.lo tcpip.lo ipcproto.lo dbgmsg.lo appframework.lo confopts.lo netif.lo ether_ntoa.lo getline.lo strnlen.lo timersub.lo timeradd.lo /opt/sfw/bin/gcc -shared .libs/console.o .libs/file.o .libs/output.o .libs/profile.o .libs/queue.o .libs/serial.o .libs/strfunc.o .libs/tcpip.o .libs/ipcproto.o .libs/dbgmsg.o .libs/appframework.o .libs/confopts.o .libs/netif.o .libs/ether_ntoa.o .libs/getline.o .libs/strnlen.o .libs/timersub.o .libs/timeradd.o -lnsl -lsocket -lcurses -lc -Wl,-soname -Wl,liblogger.so.0 -o .libs/liblogger.so.0.0.0
ld: warning: option -o appears more than once, first setting taken
ld: fatal: file liblogger.so.0: open failed: No such file or directory
ld: fatal: File processing errors. No output written to .libs/liblogger.so.0.0.0
collect2: ld returned 1 exit status
gmake[3]: *** [liblogger.la] Error 1
gmake[3]: Leaving directory `/net/jupiter/home/projects/LX2005.886/build/sol/liblogger/src'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/net/jupiter/home/projects/LX2005.886/build/sol/liblogger/src'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/net/jupiter/home/projects/LX2005.886/build/sol/liblogger'
gmake: *** [all-recursive] Error 1
* Solaris 2.10 uses the packaged version of GCC. (fails, have to use --disable-shared for it to work)
gcc (GCC) 3.4.2

* Solaris 2.10 using SunStudio 11 (cc, works)
ganymede:jcurl:sol$ cc -V
cc: Sun C 5.8 2005/10/13

It just dies during configure. I had to add 'LD=/usr/ccs/bin/ld AR=/usr/ccs/bin/ar'. It would be easier if configure just "found" these libraries on Solaris without having to explicitly set them. I'll probably write some macros to do this for me. Other than that it works.

* SuSE 10.0 Linux uses a newer version. (works)
gcc (GCC) 4.0.2 20050901 (prerelease) (SUSE Linux)

/bin/sh ../../libtool --tag=CC --mode=link gcc -DSYSCONFDIR=\"/usr/local/etc\" -O0 -g -Wall -version-info 0:0:0 -lnsl -lncurses -o liblogger.la -rpath /usr/local/lib console.lo file.lo output.lo profile.lo queue.lo serial.lo strfunc.lo tcpip.lo ipcproto.lo dbgmsg.lo appframework.lo confopts.lo netif.lo gcc -shared .libs/console.o .libs/file.o .libs/output.o .libs/profile.o .libs/queue.o .libs/serial.o .libs/strfunc.o .libs/tcpip.o .libs/ipcproto.o .libs/dbgmsg.o .libs/appframework.o .libs/confopts.o .libs/netif.o -lnsl -lncurses -Wl,-soname -Wl,liblogger.so.0 -o .libs/liblogger.so.0.0.0 (cd .libs && rm -f liblogger.so.0 && ln -s liblogger.so.0.0.0 liblogger.so.0)
(cd .libs && rm -f liblogger.so && ln -s liblogger.so.0.0.0 liblogger.so)
ar cru .libs/liblogger.a console.o file.o output.o profile.o queue.o serial.o strfunc.o tcpip.o ipcproto.o dbgmsg.o appframework.o confopts.o netif.o
ranlib .libs/liblogger.a
creating liblogger.la

* Cygwin 1.5.24 with stuff uses an old version too (works, static only, I'll deal with that later)
gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)

/bin/sh ../../libtool --tag=CC --mode=link gcc -DSYSCONFDIR=\"/usr/local/etc\" -O0 -g -Wall -version-info 0:0:0 -lncurses -o liblogger.la -rpath /usr/local/lib console.lo file.lo output.lo profile.lo queue.lo serial.lo strfunc.lo tcpip.lo ipcproto.lo dbgmsg.lo appframework.lo confopts.lo netif.lo ether_ntoa.lo libtool: link: warning: undefined symbols not allowed in i686-pc-cygwin shared libraries ar cru .libs/liblogger.a console.o file.o output.o profile.o queue.o serial.o strfunc.o tcpip.o ipcproto.o dbgmsg.o appframework.o confopts.o netif.o ether_ntoa.o
ranlib .libs/liblogger.a
creating liblogger.la
(cd .libs && rm -f liblogger.la && ln -s ../liblogger.la liblogger.la)

* FreeBSD 6.1 (works)
gcc (GCC) 3.4.4 [FreeBSD] 20050518

/usr/local/bin/bash ../../libtool --tag=CC --mode=link gcc -DSYSCONFDIR=\"/usr/local/etc\" -O0 -g -Wall -version-info 0:0:0 -lncurses -o liblogger.la -rpath /usr/local/lib console.lo file.lo output.lo profile.lo queue.lo serial.lo strfunc.lo tcpip.lo ipcproto.lo dbgmsg.lo appframework.lo confopts.lo netif.lo ether_ntoa.lo getline.lo strnlen.lo gcc -shared .libs/console.o .libs/file.o .libs/output.o .libs/profile.o .libs/queue.o .libs/serial.o .libs/strfunc.o .libs/tcpip.o .libs/ipcproto.o .libs/dbgmsg.o .libs/appframework.o .libs/confopts.o .libs/netif.o .libs/ether_ntoa.o .libs/getline.o .libs/strnlen.o -lncurses -Wl,-soname -Wl,liblogger.so.0 -o .libs/liblogger.so.0
(cd .libs && rm -f liblogger.so && ln -s liblogger.so.0 liblogger.so)
(cd .libs && rm -f liblogger.so && ln -s liblogger.so.0 liblogger.so)
ar cru .libs/liblogger.a console.o file.o output.o profile.o queue.o serial.o strfunc.o tcpip.o ipcproto.o dbgmsg.o appframework.o confopts.o netif.o ether_ntoa.o getline.o strnlen.o
ranlib .libs/liblogger.a
creating liblogger.la
(cd .libs && rm -f liblogger.la && ln -s ../liblogger.la liblogger.la)

* Interix 3.5 (works)
gcc (GCC) 3.3



So I play around a little with the options.

1. Remove -wl,-soname
ganymede:jcurl:src$ /opt/sfw/bin/gcc -shared .libs/console.o .libs/file.o .libs/output.o .libs/profile.o .libs/queue.o .libs/serial.o .libs/strfunc.o .libs/tcpip.o .libs/ipcproto.o .libs/dbgmsg.o .libs/appframework.o .libs/confopts.o .libs/netif.o .libs/ether_ntoa.o .libs/getline.o .libs/strnlen.o .libs/timersub.o .libs/timeradd.o -Wl,liblogger.so.0 -o .libs/liblogger.so.0.0.0 -lnsl -lsocket -lcurses -lc
ld: fatal: file liblogger.so.0: open failed: No such file or directory
ld: fatal: File processing errors. No output written to .libs/liblogger.so.0.0.0
collect2: ld returned 1 exit status
ganymede:jcurl:src$

2. Remove -Wl,liblogger.so.0
ganymede:jcurl:src$ /opt/sfw/bin/gcc -shared .libs/console.o .libs/file.o .libs/output.o .libs/profile.o .libs/queue.o .libs/serial.o .libs/strfunc.o .libs/tcpip.o .libs/ipcproto.o .libs/dbgmsg.o .libs/appframework.o .libs/confopts.o .libs/netif.o .libs/ether_ntoa.o .libs/getline.o .libs/strnlen.o .libs/timersub.o .libs/timeradd.o -Wl,-soname -o .libs/liblogger.so.0.0.0 -lnsl -lsocket -lcurses -lc
ld: warning: option -o appears more than once, first setting taken

3. Remove them all - no warnings/errors emitted.

Ideas? Is this a bug?

Thanks,
Jason.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]