5
現在我有3個共享對象,A.so,B.so,C.so隱式調用時如何使用RTLD_DEEPBIND?
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
我希望結果是 「來這裏B」,我可以使用dlopen
與RTLD_DEEPBIND
標誌,
但花費太多時間將功能從隱式調用更改爲顯式調用。
有沒有辦法解決這個問題?
gcc -Wl,-Bsymbolic
在此解決方案中不起作用。
那麼,如果A.c包含通用的實現。它確實有效。