静态库中的填充函数
Shim function in static library
我有一个不透明的静态链接库(.a
文件)和一些调用静态库中函数的不透明目标文件(.o
)。我想在静态库中围绕一些函数调用添加包装器。
如果它是一个动态库,我会在运行时使用 LD_PRELOAD
,但由于这是静态链接,我确定我将不得不使用编译时技术。我当时在想 -Z muldefs
,这将允许我覆盖函数调用,但我仍然需要能够在我的 shim 中调用原始函数,所以我不能直接使用它。
到目前为止,我能想到的最佳解决方案是使用 objcopy --redefine-sym
重命名不透明库中的函数,然后让我的 shim 代码以新名称调用函数。有没有更好的方法?
Is there a better way?
不,那是你能做的最好的。
我有一个不透明的静态链接库(.a
文件)和一些调用静态库中函数的不透明目标文件(.o
)。我想在静态库中围绕一些函数调用添加包装器。
如果它是一个动态库,我会在运行时使用 LD_PRELOAD
,但由于这是静态链接,我确定我将不得不使用编译时技术。我当时在想 -Z muldefs
,这将允许我覆盖函数调用,但我仍然需要能够在我的 shim 中调用原始函数,所以我不能直接使用它。
到目前为止,我能想到的最佳解决方案是使用 objcopy --redefine-sym
重命名不透明库中的函数,然后让我的 shim 代码以新名称调用函数。有没有更好的方法?
Is there a better way?
不,那是你能做的最好的。