静态库中的填充函数

Shim function in static library

我有一个不透明的静态链接库(.a 文件)和一些调用静态库中函数的不透明目标文件(.o)。我想在静态库中围绕一些函数调用添加包装器。

如果它是一个动态库,我会在运行时使用 LD_PRELOAD,但由于这是静态链接,我确定我将不得不使用编译时技术。我当时在想 -Z muldefs,这将允许我覆盖函数调用,但我仍然需要能够在我的 shim 中调用原始函数,所以我不能直接使用它。

到目前为止,我能想到的最佳解决方案是使用 objcopy --redefine-sym 重命名不透明库中的函数,然后让我的 shim 代码以新名称调用函数。有没有更好的方法?

Is there a better way?

不,那是你能做的最好的。