andbin
08-02-2006, 16:24
Ho bisogno di creare una libreria dinamica e visto che mi sembra di non averne mai fatte (in Linux, perché in Windows non ho problemi) ... sto facendo una semplice prova.
Sono in /tmp/test ed ho questi 2 sorgenti (sono stupidi ma è solo x prova):
prova.c
#include <stdio.h>
void prova (int a, int b)
{
printf ("%d\n", a*b);
}
app.c
#include <stdio.h>
void prova (int, int);
int main (void)
{
prova (10, 3);
return 0;
}
prova.c lo compilo con:
gcc -c -o prova.o prova.c
e poi con:
gcc -shared -Xlinker -soname -Xlinker libprova.so -o libprova.so prova.o
per ottenere una libprova.so
app.c lo compilo con:
gcc -c -o app.o app.c
e poi con:
gcc -L/tmp/test -lprova -o app app.o
L'eseguibile funziona solo se imposto la variabile LD_LIBRARY_PATH=/tmp/test, altrimenti mi viene segnalato che non riesce a trovare la libreria dinamica.
Nota bene: io ho bisogno poi di mettere la mia libreria dinamica in una directory qualunque e non necessariamente in una directory di sistema.
Cosa devo fare? È possibile evitare di dover impostare LD_LIBRARY_PATH?
Grazie. Sicuramente è una stupidaggine!
Sono in /tmp/test ed ho questi 2 sorgenti (sono stupidi ma è solo x prova):
prova.c
#include <stdio.h>
void prova (int a, int b)
{
printf ("%d\n", a*b);
}
app.c
#include <stdio.h>
void prova (int, int);
int main (void)
{
prova (10, 3);
return 0;
}
prova.c lo compilo con:
gcc -c -o prova.o prova.c
e poi con:
gcc -shared -Xlinker -soname -Xlinker libprova.so -o libprova.so prova.o
per ottenere una libprova.so
app.c lo compilo con:
gcc -c -o app.o app.c
e poi con:
gcc -L/tmp/test -lprova -o app app.o
L'eseguibile funziona solo se imposto la variabile LD_LIBRARY_PATH=/tmp/test, altrimenti mi viene segnalato che non riesce a trovare la libreria dinamica.
Nota bene: io ho bisogno poi di mettere la mia libreria dinamica in una directory qualunque e non necessariamente in una directory di sistema.
Cosa devo fare? È possibile evitare di dover impostare LD_LIBRARY_PATH?
Grazie. Sicuramente è una stupidaggine!