I've figured out why the linking of libCom.so was failing on solaris-sparc. The problem is that -lCrun must come AFTER -lCstd in the link line, because Cstd refers to functions in Crun, and it must be a one-pass linker?
I fixed this by changing the definition of STLPORT_LDLIBS_NO in CONFIG.Common.solaris-sparc. I don't know if this is the best solution, but it does allow 3.14.10 to build on Solaris.
Here's the change I made:
***************************
===================================================================
RCS file: /net/phoebus/epicsmgr/cvsroot/epics/base/configure/os/CONFIG.Common.solaris-sparc,v
retrieving revision 1.15.2.21
diff -u -r1.15.2.21 CONFIG.Common.solaris-sparc
--- configure/os/CONFIG.Common.solaris-sparc 7 Oct 2008 22:17:17 -0000 1.15.2.21
+++ configure/os/CONFIG.Common.solaris-sparc 25 Nov 2008 04:46:11 -0000
@@ -40,7 +40,7 @@
STLPORT_CFLAGS_YES= -library=stlport4
STLPORT_CFLAGS_NO=
STLPORT_LDLIBS_YES =
-STLPORT_LDLIBS_NO = -lCstd
+STLPORT_LDLIBS_NO = -lCstd -lCrun
# can be overridden in CONFIG_SITE.Common.solaris-sparc
USE_STLPORT=NO
***************************
Mark
________________________________
From: Mark Rivers
Sent: Sat 11/22/2008 3:09 PM
To: '[email protected]'
Subject: RE: solaris-x86 build error on 3.14.10
I was actually making a mistake, the machine was a sparc, not x86.
But I get the same error when I correct that mistake and build for solaris-sparc when linking libCom.so:
make[2]: Entering directory `/corvette/usr/local/epics/base-3.14.10/src/libCom'
make -C O.solaris-sparc -f ../Makefile TOP=../../.. T_A=solaris-sparc install
make[3]: Entering directory `/corvette/usr/local/epics/base-3.14.10/src/libCom/O.solaris-sparc'
/opt/SUNWspro/bin/CC -o libCom.so.3.14 -z defs -G -h libCom.so.3.14 -z text -mt -z ignore -z combreloc -z lazyload bucketLib.o epicsRingPointer.o epicsRingBytes.o postfix.o calcPerform.o cvtFast.o resourceLib.o epicsOnce.o epicsSingletonMutex.o dbmf.o ellLib.o envSubr.o envData.o errlog.o errSymLib.o errSymTbl.o fdmgr.o fdManager.o freeListLib.o gpHashLib.o iocsh.o registry.o libComRegister.o iocLog.o logClient.o macCore.o macEnv.o macUtil.o aToIPAddr.o adjustment.o cantProceed.o epicsConvert.o epicsExit.o epicsStdlib.o epicsString.o truncateFile.o ipAddrToAsciiAsynchronous.o epicsUnitTest.o epicsThread.o epicsMutex.o epicsEvent.o epicsTime.o epicsMessageQueue.o epicsGeneralTime.o osiClockTime.o osdSock.o osdSockAddrReuse.o osiSock.o systemCallIntMech.o epicsSocketConvertErrnoToString.o osdAssert.o osdFindSymbol.o osdInterrupt.o osdPoolStatus.o osdSignal.o osdEnv.o epicsReadline.o epicsTempFile.o epicsStdio.o osdStdio.o osdThread.o osdMutex.o osdEvent!
.o osdTime.o osdProcess.o osdNetIntf.o osdMessageQueue.o devLib.o devLibOSD.o taskwd.o epicsTimer.o timer.o timerQueue.o timerQueueActive.o timerQueueActiveMgr.o timerQueuePassive.o tsDefs.o -lposix4 -lpthread -lm -lsocket -lnsl -lumem -lCrun -lc -lCstd
Undefined first referenced
symbol in file
void*__Crun::vector_del(void*,unsigned,void(*)(void*)) /opt/SUNWspro/prod/lib/libCstd.a(locale.o)
void*__Crun::vector_new(void*,unsigned,unsigned,void(*)(void*),void(*)(void*)) /opt/SUNWspro/prod/lib/libCstd.a(locale.o)
void operator delete(void*,void*) /opt/SUNWspro/prod/lib/libCstd.a(zOtiZS4hQ7CvMDXtQoDv.o)
ld: fatal: Symbol referencing errors. No output written to libCom.so.3.14
make[3]: *** [libCom.so.3.14] Error 1
make[3]: Leaving directory `/corvette/usr/local/epics/base-3.14.10/src/libCom/O.solaris-sparc'
make[2]: *** [install.solaris-sparc] Error 2
make[2]: Leaving directory `/corvette/usr/local/epics/base-3.14.10/src/libCom'
make[1]: *** [libCom.install] Error 2
make[1]: Leaving directory `/corvette/usr/local/epics/base-3.14.10/src'
make: *** [src.install] Error 2
Thanks,
Mark
________________________________
From: Mark Rivers
Sent: Fri 11/21/2008 6:49 PM
To: '[email protected]'
Subject: solaris-x86 build error on 3.14.10
I'm trying to build 3.14.10 on solaris-x86.
I get the following error when building libCom.a
/opt/SUNWspro/bin/CC -xar -o libCom.a bucketLib.o epicsRingPointer.o epicsRingBytes.o postfix.o calcPerform.o cvtFast.o resourceLib.o epicsOnce.o epicsSingletonMutex.o dbmf.o ellLib.o envSubr.o envData.o errlog.o errSymLib.o errSymTbl.o fdmgr.o fdManager.o freeListLib.o gpHashLib.o iocsh.o registry.o libComRegister.o iocLog.o logClient.o macCore.o macEnv.o macUtil.o aToIPAddr.o adjustment.o cantProceed.o epicsConvert.o epicsExit.o epicsStdlib.o epicsString.o truncateFile.o ipAddrToAsciiAsynchronous.o epicsUnitTest.o epicsThread.o epicsMutex.o epicsEvent.o epicsTime.o epicsMessageQueue.o epicsGeneralTime.o osiClockTime.o osdSock.o osdSockAddrReuse.o osiSock.o systemCallIntMech.o epicsSocketConvertErrnoToString.o osdAssert.o osdFindSymbol.o osdInterrupt.o osdPoolStatus.o osdSignal.o osdEnv.o epicsReadline.o epicsTempFile.o epicsStdio.o osdStdio.o osdThread.o osdMutex.o osdEvent.o osdTime.o osdProcess.o osdNetIntf.o osdMessageQueue.o devLib.o devLibOSD.o taskwd.o epic!
sTimer.o timer.o timerQueue.o timerQueueActive.o timerQueueActiveMgr.o timerQueuePassive.o tsDefs.o
/opt/SUNWspro/bin/CC -o libCom.so.3.14 -z defs -G -h libCom.so.3.14 -z text -mt -z ignore -z combreloc -z lazyload bucketLib.o epicsRingPointer.o epicsRingBytes.o postfix.o calcPerform.o cvtFast.o resourceLib.o epicsOnce.o epicsSingletonMutex.o dbmf.o ellLib.o envSubr.o envData.o errlog.o errSymLib.o errSymTbl.o fdmgr.o fdManager.o freeListLib.o gpHashLib.o iocsh.o registry.o libComRegister.o iocLog.o logClient.o macCore.o macEnv.o macUtil.o aToIPAddr.o adjustment.o cantProceed.o epicsConvert.o epicsExit.o epicsStdlib.o epicsString.o truncateFile.o ipAddrToAsciiAsynchronous.o epicsUnitTest.o epicsThread.o epicsMutex.o epicsEvent.o epicsTime.o epicsMessageQueue.o epicsGeneralTime.o osiClockTime.o osdSock.o osdSockAddrReuse.o osiSock.o systemCallIntMech.o epicsSocketConvertErrnoToString.o osdAssert.o osdFindSymbol.o osdInterrupt.o osdPoolStatus.o osdSignal.o osdEnv.o epicsReadline.o epicsTempFile.o epicsStdio.o osdStdio.o osdThread.o osdMutex.o osdEvent!
.o osdTime.o osdProcess.o osdNetIntf.o osdMessageQueue.o devLib.o devLibOSD.o taskwd.o epicsTimer.o timer.o timerQueue.o timerQueueActive.o timerQueueActiveMgr.o timerQueuePassive.o tsDefs.o -lposix4 -lpthread -lm -lsocket -lnsl -lCrun -lc -lCstd
Undefined first referenced
symbol in file
void*__Crun::vector_del(void*,unsigned,void(*)(void*)) /opt/SUNWspro/prod/lib/libCstd.a(locale.o)
void*__Crun::vector_new(void*,unsigned,unsigned,void(*)(void*),void(*)(void*)) /opt/SUNWspro/prod/lib/libCstd.a(locale.o)
void operator delete(void*,void*) /opt/SUNWspro/prod/lib/libCstd.a(zOtiZS4hQ7CvMDXtQoDv.o)
ld: fatal: Symbol referencing errors. No output written to libCom.so.3.14
Can anyone tell me what the problem is?
Versions:
SunOS 5.10
CC: Sun C++ 5.8 Patch 121017-13 2008/01/02
- Replies:
- Re: solaris-x86 build error on 3.14.10 Andrew Johnson
- References:
- solaris-x86 build error on 3.14.10 Mark Rivers
- RE: solaris-x86 build error on 3.14.10 Mark Rivers
- Navigate by Date:
- Prev:
Re: Error from Autosave version 4-4 Tim Mooney
- Next:
sscan compile error on base 3.14.10 on linux John M. Skinner
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
<2008>
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
RE: solaris-x86 build error on 3.14.10 Mark Rivers
- Next:
Re: solaris-x86 build error on 3.14.10 Andrew Johnson
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
<2008>
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|