[vtkusers] Compiling VTK + JAVA on solaris

Andrew Watkins andrew at dcs.bbk.ac.uk
Fri Dec 10 12:27:49 EST 2004


Still having problems VTK 4.4.2. Recap:

- Installed: gcc/c++ 3.4.2 on solaris 9
- no referce to SUN Compiler
- LD_RUN_PATH, CLASSPATH all empty
- LD_LIBRARY_PATH=/usr/local/lib  (*GCC installed here*)
- run cmake -i 
	BUILD_SHARED_LIBS=ON
	VTK_USE_ANSI_STDLIB=ON
	VTK_USE_HYBRID=ON
        VTK_WRAP_JAVA=ON
- No flags altered for cmake (that make be the problem)
- run gmake -i 

- Checked libvtkCommonJava.so contains libCrun

But when I "java SimpleVTK" I still get the cout sysmbol error (the names changes if you use Sun 
Compiler)

%java SimpleVTK
Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/VTK/VTK44/bin/libvtkCommonJava.so: 
ld.so.1: java: fatal: relocation error: file /tmp/VTK/VTK44/bin/libvtkCommonJava.so: symbol _ZSt4cout: 
referenced symbol not found
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)


I guess I must be missing something, but altering enironments variables don't seem to fix it!!!


Other information:
% /usr/ccs/bin/nm libvtkCommonJava.so | grep cout
[6174]	|         0|       0|NOTY |GLOB |0    |UNDEF  |_ZSt4cout

And truss gives me that information:

% truss -o /tmp/out java SimpleVTK
% grep libC /tmp/out | grep -v ENOENT
stat("/usr/lib/libCrun.so.1", 0xFFBFEA30)	= 0
open("/usr/lib/libCrun.so.1", O_RDONLY)		= 3
resolvepath("/usr/lib/libCrun.so.1", "/usr/lib/libCrun.so.1", 1023) = 21
/1:	stat("/usr/lib/libCrun.so.1", 0xFFBFAF48)	= 0
/1:	stat("/usr/lib/libCrun.so.1", 0xFFBFAFC8)	= 0



Hope some one can help or has a guide!!!!


Andrew



> libvtkCommonJava.so needs to link to libCrun.
> When most C++ compilers create a shared library they
> automatically add the c++ run time library to the link line.
> However, the sun compiler does not seem to do that.
> So, I think it can be fixed with a small change to the
> CMakeLists.txt files in VTK.
> 
> In the top level VTK CMakeLists.txt file, after this comment:
> #-----------------------------------------------------------------------------
> # VTK requires special compiler flags on some platforms.
> 
> Add this:
> 
> # make sure Crun is linked in with the native compiler, it is
> # not used by default for shared libraries and is required for
> # things like java to work.
> IF(CMAKE_SYSTEM MATCHES "SunOS.*")
>   IF(NOT CMAKE_COMPILER_IS_GNUCXX)
>      LINK_LIBRARIES(Crun)
>   ENDIF(NOT CMAKE_COMPILER_IS_GNUCXX)
> ENDIF(CMAKE_SYSTEM MATCHES "SunOS.*")
> 
> 
> Then remove bin/*.so and re-link all the shared libraries.
> It should fix the problem.  I have checked the fix into
> cvs VTK, but it should work with any other version as well.
> 
> 
> -Bill
> 
> At 07:22 AM 12/9/2004, Andrew Watkins wrote:
> 
> >Hi,
> >
> >I have been trying for over the last week to compile VTK 4.4.2 or 4.2.6 with Java
> >and have failed many times with different errors.
> >
> >If any one has a complete guide it would be very usefull, since I am sure I am not the only 
> >one. 
> >
> >Current problem is that I FINNALY got it to complile with no errors, but when I try the 
> >test programs I get errors:
> >
> >Setup
> >Solaris 9/openGL 1.3/gcc 3.3/Java 1.4.2_06/VTK 4.4.2 
> >(Have tried Java 1.5 and gcc 2.95.3)
> >% cd /tmp
> >% cmake -i
> >  Main options I set:
> >        BUILD_EXAMPLES:=ON
> >        BUILD_SHARED_LIBS=ON
> >        BUILD_TESTING=ON
> >        VTK_USE_ANSI_STDLIB=ON
> >        VTK_USE_HYBRID=ON
> >        VTK_USE_RENDERING=ON
> >        CMAKE_INSTALL_PREFIX:PATH=/opt/vtk
> >        VTK_WRAP_JAVA=ON
> >        JAVACOMMAND=/usr/j2se/bin/java
> >        JAVA_ARCHIVE=/usr/j2se/bin/jar
> >        JAVA_AWT_INCLUDE_PATH=/usr/j2se/include
> >        JAVA_AWT_LIBRARY=/usr/j2se/jre/lib/sparc/libjawt.so
> >        JAVA_COMPILE=/usr/j2se/bin/javac
> >        JAVA_INCLUDE_PATH=/usr/j2se/include
> >        JAVA_INCLUDE_PATH2=/usr/j2se/include/solaris
> >        JAVA_RUNTIME=/usr/j2se/bin/java
> >
> >% gmake -i
> >% gmake install
> >% cd java/vtk
> >% java *.java
> >% cd ..
> >% jar cvf vtk.jar vtk/*.class
> >
> >% echo $CLASSPATH
> >  .:/tmp/VTK/java/vtk.jar
> >  
> >% echo $LD_LIBRARY_PATH
> >  /opt/gnu/lib:/opt/vtk/lib/vtk:/opt/SUNWspro9/lib:/usr/openwin/lib
> > 
> >% cd /tmp/VTK/Wrapping/Java
> >% javac SimpleVTK.java
> >% java SimpleVTK
> >Exception in thread "main" java.lang.UnsatisfiedLinkError: 
> >/bbkdcs/vtk/lib/vtk/libvtkCommonJava.so: ld.so.1: java: fatal: relocation error: file 
> >/bbkdcs/vtk/lib/vtk/libvtkCommonJava.so: symbol _ZSt4cout: referenced symbol not found
> >        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
> >        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1586)
> >        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1511)
> >        at java.lang.Runtime.loadLibrary0(Runtime.java:788)
> >        at java.lang.System.loadLibrary(System.java:834)
> >        at vtk.vtkPanel.<clinit>(vtkPanel.java:26)
> >        at SimpleVTK.<init>(SimpleVTK.java:19)
> >        at SimpleVTK.main(SimpleVTK.java:49)
> >
> >ALSO:
> >% javac Regression.java
> >Regression.java:21: cannot resolve symbol
> >symbol  : method Initialize (java.lang.String[])
> >location: class vtk.vtkTesting
> >    vtkTesting.Initialize(args);
> >              ^
> >Regression.java:95: cannot resolve symbol
> >symbol  : variable PASSED 
> >location: class vtk.vtkTesting
> >    int retVal0 = vtkTesting.PASSED;
> >                            ^
> >Regression.java:108: cannot resolve symbol
> >.....
> >
> >
> >Any pointers would be great!!!
> >
> >
> >Andrew
> >
> >_______________________________________________
> >This is the private VTK discussion list. 
> >Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> >Follow this link to subscribe/unsubscribe:
> >http://www.vtk.org/mailman/listinfo/vtkusers 
> 




More information about the vtkusers mailing list