为第三方库libA.a包装调用malloc,但不为libB.a调用

时间:2015-07-30 14:15:53

标签: c++ c unix linker

假设你有对象文件main.o和两个外部第三方静态库libA.a和libB.b.而你想把它们联系在一起。但是你想从libA.a中包装对malloc的调用(用你自己的malloc替换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。 问题是,如何让它只适用于其中一个?

1 个答案:

答案 0 :(得分:0)

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

Wrap malloc but only for some of input files (object and lib)