|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
[C/Linux] Creare ed usare librerie dinamiche
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 Codice:
#include <stdio.h>
void prova (int a, int b)
{
printf ("%d\n", a*b);
}
Codice:
#include <stdio.h>
void prova (int, int);
int main (void)
{
prova (10, 3);
return 0;
}
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!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Se la directory è "fissa" (ad es. decidi di mettere le tue librerie in /opt/mylibs), allora è sufficiente che quando fai il link del tuo eseguibile aggiungi -Wl,--rpath=/opt/mylibs Così facendo la (o le) directory indicata con --rpath sarà la prima ad essere esaminata dal loader; poi toccherà alle directory di sistema/ld_library_path ecc.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#3 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
Grazie mille per l'info!!!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:50.


















