隐藏C中的函数

dk7*_*dk7 8 c linux ld-preload

我有一个具有函数f1的应用程序 void f1 ()

另外,我有一个我加载的库LD_PRELOAD.

该库有几个代码文件和几个头文件,并编译为.so文件.

在头文件中还使用以f1上述相同签名命名的函数.最新版f1仅在库中使用.(我无法将其更改为静态方法)

问题是当我从应用程序的库覆盖中加载库(使用LD_PRELOAD)时.f1f1

有没有办法配置f1库只对库可见?

nne*_*neo 6

如果您可以修改头文件,请使该函数static仅在该编译单元中可见,或者将其标记为__attribute__ ((visibility ("hidden")))(仅限GCC)以使其仅在该库中可见:

__attribute__ ((visibility ("hidden"))) void f1();
Run Code Online (Sandbox Code Playgroud)