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 이리와"나는 RTLD_DEEPBIND
플래그 dlopen
을 사용할 수 있습니다로 결과를 원하는,
하지만이 내 프로젝트에서 암묵적 호출에서 명시 적 호출로 함수를 변경하는 데 너무 많은 시간이 소요됩니다.
이 문제를 해결하기위한 방법이 있습니까?
gcc -Wl,-Bsymbolic
은이 솔루션에서 작동하지 않습니다.
글쎄, A.c가 공통 구현을 포함하고 있다면. 그것은 효과가있다.