Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.tools -> Re: Linking embeded SQL C++ with Oracle 8.1.6. on SCO Unixware 7
Libor Chocholaty (chocholaty_at_iol.cz) wrote:
|
| I am porting simple code from Linux to SCO UnixWare 7. On Linux all is
| working fine but on UnixWare compile crashed while linking on undefined
| symbols
| _fpgetround
| _fpgetmask
| fpgetmask
| fpsetmask.
|
| I feeled problems when compiler (GCC-2.95.2) tells me that library
| libclntsh depends on libjava. Unresolved symbols are from libjava. On
| UnixWare is installed java 1.1.7 which is distributed with Oracle 8.1.6
| for SCO. Oracle is the Enterprise version.
This is a known issue with how Oracle uses the SCO JVM. This is how we describe it in the SCO JDK 1.1.7B Release Notes (for "libuser" read an Oracle client shared library such as libclntsh):
8. Some multiple-level executable/library structures that use JNI
Invocation will not work correctly. In particular, an a.out that does a dlopen of a libuser.so that in turn invokes the Java virtual machine, will not work. An a.out that is linked with -luser but not -ljava that calls a libuser.so that in turn invokes the Java virtual machine, will also not work. Such an a.out must always be linked against -ljava itself. (See /usr/java/demo/jni_invoc_demo for the full set of system libraries to link against.)
The reason for this problem have to do with the semantics of multi-level dynamic libraries; Linux must use different semantics from SVR4.
So the bottom line is that you must name both the Oracle libraries and the JVM library when you link, e.g. -lclntsh -ljava -lm -lX11 -lsocket -lnsl.
-- Jonathan Schilling SCO, Inc. jls_at_sco.comReceived on Fri Jan 12 2001 - 18:38:08 CST