Talk:WCET Analysis

From JopWiki

Jump to: navigation, search

[edit] Notes on lp_solve + JDK 6 (64-bit) on MAC OS X

A good starting point is [1], but some adaptions are neccessary for getting it to work with the 64-bit JDK. Please be careful when carrying out the install actions.

Both files (liblpsolve55.dylib and liblpsolve55j.jnilib) are available as universal i386/x86_64 libraries in the JOP repository.

1. In lpsolve55, modify the build script to build a universal 32-bit / 64-bit dynamic library

   $ cd lp_solve_5.5/lpsolve55
   $ cp ccc.osx ccc.osx64
   $ patch ccc.osx64
   3c3
   < c=cc
   ---
   > c="cc -arch i386 -arch x86_64"
   $ 

Running sh ccc.osx64 we obtain the 64-bit version of lpsolve:

   $ file bin/osx64/liblpsolve55.dylib 
   bin/osx64/liblpsolve55.dylib: Mach-O universal binary with 2 architectures
   bin/osx64/liblpsolve55.dylib (for architecture i386):	Mach-O dynamically linked shared library i386
   bin/osx64/liblpsolve55.dylib (for architecture x86_64):	Mach-O 64-bit dynamically linked shared library x86_64

and install it

   sudo cp -i bin/osx64/liblpsolve55.* /usr/local/lib/.

Note that if you also have the macport installed, it is important to have /usr/local/lib before /opt/local/lib in your DYLD_FALLBACK_LIBRARY_PATH :

   $ echo $DYLD_FALLBACK_LIBRARY_PATH
   /usr/local/lib:/opt/local/lib:/usr/lib

2. Now for the java bindings, we also need to modify the build process

   $ cd lp_solve_5.5_java/lib
   $ mkdir mac64 && cd mac64
   $ cat >build.sh
   CFLAGS="-fPIC -fno-common -arch i386 -arch x86_64"
   LDFLAGS="-L/usr/local/lib -arch i386 -arch x86_64"
   INCL="-I /System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers -I /opt/local/include/lpsolve -I ../../src/c -idirafter /usr/include/sys"
   g++ $CFLAGS $INCL   -c ../../src/c/lpsolve5j.cpp
   g++ $LDFLAGS -dynamiclib lpsolve5j.o -compatibility_version 5.5.0 -current_version 5.5.0 -o liblpsolve55j.jnilib -lc -llpsolve55
   $ sh build.sh

We can install it into e.g. '/usr/lib/java':

   $ sudo cp -i liblpsolve55j.jnilib /usr/lib/java