Problem linking c-program
Date: Sat, 18 Feb 2012 22:56:28 +0100
Message-ID: <9qal4dFofdU1_at_mid.individual.net>
Hi,
linking a program on Solaris 10 fails suddenly with this messages:
/opt/oracle/product/o10gR2/lib32/libclntsh.so: undefined reference to
`dlclose_at_SISCD_2.3'
/opt/oracle/product/o10gR2/lib32/libclntsh.so: undefined reference to
`modf_at_SYSVABI_1.3'
/opt/oracle/product/o10gR2/lib32/libclntsh.so: undefined reference to
`dlsym_at_SISCD_2.3'
/opt/oracle/product/o10gR2/lib32/libclntsh.so: undefined reference to
`dlopen_at_SISCD_2.3'
/opt/oracle/product/o10gR2/lib32/libclntsh.so: undefined reference to
`ldexp_at_SYSVABI_1.3'
/opt/oracle/product/o10gR2/lib32/libclntsh.so: undefined reference to
`gethostname_at_SUNWprivate_1.1'
/opt/oracle/product/o10gR2/lib32/libclntsh.so: undefined reference to
`dladdr_at_SUNW_0.8'
/opt/oracle/product/o10gR2/lib32/libclntsh.so: undefined reference to
`isnan_at_SYSVABI_1.3'
/opt/oracle/product/o10gR2/lib32/libclntsh.so: undefined reference to
`dlerror_at_SISCD_2.3'
This problem occurs on one machine.
On this machine Oracle client software was upgraded from 10.2.0.3 to
10.2.0.5. Reinstallation of Oracle client 10.2.0.1 and 10.2.0.3 did not
help.
libclntsh.so is a symbolic link to libclntsh.so.10.1
17 Feb 18 22:01 libclntsh.so -> libclntsh.so.10.1 22253184 Feb 18 22:01 libclntsh.so.10.1
ldd show these dependencies:
oracle_at_sb2000:/opt/oracle/product/o10gR2/lib32 ldd libclntsh.so.10.1
libnnz10.so => /opt/oracle/product/o10gR2/lib32/libnnz10.so libkstat.so.1 => /lib/libkstat.so.1 libnsl.so.1 => /lib/libnsl.so.1 libsocket.so.1 => /lib/libsocket.so.1 libgen.so.1 => /lib/libgen.so.1 libdl.so.1 => /lib/libdl.so.1 libc.so.1 => /lib/libc.so.1 libaio.so.1 => /lib/libaio.so.1 librt.so.1 => /lib/librt.so.1 libsched.so.1 => /usr/lib/libsched.so.1 libm.so.2 => /lib/libm.so.2 libmp.so.2 => /lib/libmp.so.2 libmd.so.1 => /lib/libmd.so.1 libscf.so.1 => /lib/libscf.so.1 libdoor.so.1 => /lib/libdoor.so.1 libuutil.so.1 => /lib/libuutil.so.1 /platform/SUNW,Sun-Blade-1000/lib/libc_psr.so.1 /platform/SUNW,Sun-Blade-1000/lib/libmd_psr.so.1
The weird thing is, that sqlplus32 is dynamically linked against
libclntsh.so, but is runnable:
oracle_at_sb2000:/opt/oracle/product/o10gR2 ldd bin/sqlplus32
libsqlplus.so =>
/opt/oracle/product/o10gR2/lib32/libsqlplus.so
libclntsh.so.10.1 =>
/opt/oracle/product/o10gR2/lib32/libclntsh.so.10.1
libnnz10.so => /opt/oracle/product/o10gR2/lib32/libnnz10.so libkstat.so.1 => /lib/libkstat.so.1 libnsl.so.1 => /lib/libnsl.so.1 libsocket.so.1 => /lib/libsocket.so.1 libgen.so.1 => /lib/libgen.so.1 libdl.so.1 => /lib/libdl.so.1 libc.so.1 => /lib/libc.so.1 libaio.so.1 => /lib/libaio.so.1 librt.so.1 => /lib/librt.so.1 libsched.so.1 => /usr/lib/libsched.so.1 libm.so.2 => /lib/libm.so.2 libthread.so.1 => /lib/libthread.so.1 libm.so.1 => /lib/libm.so.1 libmp.so.2 => /lib/libmp.so.2 libmd.so.1 => /lib/libmd.so.1 libscf.so.1 => /lib/libscf.so.1 libdoor.so.1 => /lib/libdoor.so.1 libuutil.so.1 => /lib/libuutil.so.1 /platform/SUNW,Sun-Blade-1000/lib/libc_psr.so.1 /platform/SUNW,Sun-Blade-1000/lib/libmd_psr.so.1
sb2000.[maj2e_langfr]/mbi/mbi2e_all. sqlplus32 $FXUSERID
SQL*Plus: Release 10.2.0.5.0 - Production on Sa Feb 18 22:45:34 2012
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Verbunden mit:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing
options
SQL>
The link command is
/usr/gnu/gcc32/bin/g++ -pedantic -Wall -Wfloat-equal -Wno-long-long -s
-L/mbi/mbi2e_all/fix410/sparc58-ora1020/lib -L/mbi/maj2e_objs
/mbi/maj2e_objs/mbi_start_main.o -lmbi_start -lmbi_abf -lmbi_ein
-lmbi_mawi -lmbi_fert -lmbi_kal -lmbi_bdv -lmbi_forms -lmbi_euro -lmbi_fibu -lmbi_stamm -lmbi_basis -lmbi_webservices -lmbi_sqlstdspec -lmbi_sqlspec -L/mbi/maj2e_objs -lmbi_sql1 -lmbi_sql2 -lmbi_sql3 -lmbi_sqlstd1 -lbcas -lb_system -lb_ldap -L/usr/gnu/lib -lldap -llber -lsasl2 -lgssapi_krb5 -lkrb5 -lssl -lk5crypto -lcrypto -lcom_err -lkrb5support -lresolv -lsocket -lnsl/mbi/mbi2e_all/fix410/sparc58-ora1020/lib/perf-p.o -lfix -lipc
/mbi/mbi2e_all/fix410/sparc58-ora1020/lib/fxcursor-p.o
/mbi/mbi2e_all/fix410/sparc58-ora1020/lib/sql-p.o
-L/opt/oracle/product/o10gR2/lib32 -lclntsh `cat
/opt/oracle/product/o10gR2/lib32/ldflags` `cat
/opt/oracle/product/o10gR2/lib32/sysliblist`
-R/opt/oracle/product/o10gR2/lib32 -laio -lposix4 -lm -lthread -lm
/usr/gnu/lib/libfl.a /usr/gnu/lib/libtomcrypt.a /usr/gnu/lib/libxmlrpc.a
/usr/gnu/gcc32compiled/lib/libxslt.a
/usr/gnu/gcc32compiled/lib/libxml2.a /usr/gnu/lib/libiconv.a
/usr/gnu/lib/libz.a /usr/gnu/lib/liblpsolve55.a
/usr/gnu/g++32/lib/libgsoap++.a
-o /mbi/maj2e_bin/mbi_start
As you can see, after -lclntsh the content of ldlfags and sysliblist is
added.
sysliblist contains -lkstat -lnsl -lsocket -lgen -ldl -lc -laio -lposix4
-lsched.
So libdl.so, libc.so are added here containing most of the missing
symbols. Library libm is also added separately.
Exact this same comamndline works on other machines with Solaris 9 and 10.
So this is probably not the cause of the problem.
Received on Sat Feb 18 2012 - 15:56:28 CST