Ora ho 3 oggetti condivisi, A.so, B.so, c.soCome utilizzare RTLD_DEEPBIND quando si richiama implicitamente?
A.c
void libA()
{
common();
}
B.c
void common()
{
printf("COME HERE B\n");
}
C.c
void common()
{
printf("COME HERE C\n");
}
(just ingore the .h files)
test.c
int main()
{
libA();
return 1;
}
complie:
gcc -fPIC -shared libB.so libB.c
gcc -fPIC -shared libA.so libA.c ./libB.so
gcc -o test test.c libC.so libA.so
Vorrei risultato di essere "Vieni qui B" e potrei usare dlopen
con RTLD_DEEPBIND
di bandiera,
ma esso costa troppo tempo per cambiare le funzioni dalla chiamata implicita alla chiamata esplicita nel mio progetto.
Esiste comunque una soluzione per risolvere questo problema?
gcc -Wl,-Bsymbolic
non funziona in questa soluzione.
Bene, se A.c contiene implementazione di comune. Funziona.