Crear librerias dinamicas en Linux

luis
26 de Enero del 2006
Buenas. el problemilla (mas bien para mi problemon) es que estoy desarrollando una aplicacion en Java que ha de utilizar como core subrutinas hechas en Fortran. Para ello Java tiene la posibilidad de utilizar el jni para permitir la comunicacion entre el interface de Java y el core de Fortran. Bien hasta ahi todo va bien hasta que me he dado cuenta de qeu las librerias que me esta creando linux son estaticas, cuando yo las necesito dinamicas. He probado diferentes opciones pero no se me solucina el problema. Alguien me puede decir como puedo construir una libreria dinamica en linux y como registrarla en el LD_LIBRARY_PATH sin que de errores de linkage al ejecutar el programa?
Para compilar el codigo frotran uso el g77 de la siguiente manera(los nombres de los archivos son aleatorios):
g77 -fPIC -c ffortran.f
Para compilar el wrapper de C/C++:
gcc -fPIC -c ccode.c
Para crear la libreria
gcc -shared -fPIC ccode.o ffortran.o -lg2c -o libsource.so
Registro la libreria:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/luis/prueba/test1
Pues, a pesar de todo, al ejecutar el programa:
java test
me da error de linkage
Si alguien me puede echar un cable genial, Gracias

chuidiang
26 de Enero del 2006
Hola:

Compila para obtener los ficheros .o de cada c que tengas.

La librería se crea con ld, no con gcc. El comando es algo como esto

ld -o liblibreria.so objeto1.o objeto2.o ... -shared

En http://www.geocities.com/chuidiang/herramientas/librerias.html, hacia el final, tienes un pequeño tutorial de cómo hacerlo.

Se bueno.

luis
26 de Enero del 2006
la razon por la que para hacer las librerias dinamicas porke los arhcivos fortran trabajan con "variables globales" ke han de ser sobreescritas por las subrutinas del propio codigo, me da todo el rato errores. Yo creo ke es debido a los enlaces estaticos, pero no se si puede ser debido a las propias librerias?