为第三方库libA封装对malloc的调用.a,但不是为了libb

Wrap calls to malloc for third party library libA.a, but not for libB.a

本文关键字:libb 第三方 libA 封装 malloc 调用      更新时间:2023-10-16

假设您有一个目标文件main。o和两个外部第三方静态库libA。b。你想把它们连在一起。但是您希望封装来自libA的对malloc的调用。a(用你自己的malloc替换),但libB.a不需要。

你会怎么做?

这是一个有趣的问题,但它可以解决吗?

(为了让它更有趣,假设它是c和c++代码的混合:))

编辑1:

让事情更清楚。我将向您展示如何为这两个库完成:

gcc -static -Wl,--wrap=malloc -o main.out main.o mem.o -lA -lB
mem

。O文件包含函数__wrap_malloc的代码。但这将导致两个库都使用自定义malloc。问题是,如何让它只对其中一个有效?

我的另一个问题得到了一个很好的答案,那是更具体的。

包装malloc,但只适用于某些输入文件(object和lib)