Ticket UUID: | 874194 | |||
Title: | missing -lm when building shared lib on OSF/1 | |||
Type: | Patch | Version: | None | |
Submitter: | rcalmbac | Created on: | 2004-01-10 00:08:48 | |
Subsystem: | 53. Configuration and Build Tools | Assigned To: | stwo | |
Priority: | 5 Medium | Severity: | Minor | |
Status: | Open | Last Modified: | 2016-08-25 10:56:14 | |
Resolution: | Fixed | Closed By: | nobody | |
Closed on: | 2006-03-28 22:49:35 | |||
Description: |
For Tcl 8.4.5, when building the shared lib (configure --enable-shared) on Digital OSF/1 V4.0, user executables that link against libtcl8.4.so (-ltcl) and that don't need the math library libm.so themselves, suddenly need a -lm on the link command line, otherwise there will be runtime errors due to unresolved symbols from libm.so. Previously (with Tcl 8.3.4), it was not necessary to have the -lm flag, so the Tcl upgrade breaks existing user Makefiles. I found that building libtcl8.4.so with -lm on the link command line solves the problem. This seems to put enough information into libtcl8.4.so for the runtime linker to be able to resolve all symbols. So instead of ld -shared -expect_unresolved "*" -o libtcl8.4.so ${OBJS} -rpath /work/cvim1/src/tcl/tcl8.4.5/install/osf1-alpha/lib I do ld -shared -expect_unresolved "*" -o libtcl8.4.so ${OBJS} -lm -rpath /work/cvim1/src/tcl/tcl8.4.5/install/osf1-alpha/lib This is easily accomplished by doing $ gmake SHLIB_LD_LIBS=-lm So, a way to fix this problem would be to change line 1345 in unix/tcl.m4 from SHLIB_LD_LIBS="" to SHLIB_LD_LIBS="-lm" | |||
User Comments: |
rcalmbac added on 2006-03-30 02:41:37:
Logged In: YES user_id=687758 The output of nm -Pn libm.a | grep sin includes this line: sin T 0x00000000000010 0x00000000000008 and the man page defines type 'T' as "External text". I assume this means 'sin' is actually defined in libm.a. We don't really use OSF1 any more, but if there is some quick test you want me to do, let me know. All I know is that the rather simple fix given solved the problem at the time. hobbs added on 2006-03-29 05:49:35: Logged In: YES user_id=72656 MATH_LIBS is included in TCL_LIBS for unix, which is where -lm would be, unless 'sin' is in libc on OSF. |