如何避免在测试中包含许多间接库? (C / C ++,binutils)

时间:2016-06-20 16:24:52

标签: c linker binutils

如果你有一个测试,这取决于你的代码库中的库(在这种情况下是静态库)。

testFoo取决于libBar中的单个函数。

然而libBar中的其他功能(我们不会使用),请致电libSpamlibSpaz ...反过来,他们有自己的依赖关系。

这会让你陷入依赖地狱,最终你需要链接所有的库。

在实践中,我只找到了几种方法来解决这个问题:

  • 链接(几乎)所有内容(工作但对大型程序来说很慢)。
  • 使用存根,这是一个源文件,它具有链接所需的所有未使用符号的NOP函数,但仅由我们不会调用的函数间接使用。
    < em>(工作,但有一个麻烦,当有100个&#39; +时)。
  • 拆分库以便将它们包含在内进行测试。
    (重新排列整个源树可能是不可接受的,因此链接的测试速度更快。)
  • 使用ifdef并将相同的源文件编译成多个库,其中一个库不包含对不需要的符号的引用。
    (工作但是很难维护,尤其是如果测试使用库的不同部分)

有没有办法告诉链接器 drop 忽略某些符号/函数?所以不需要这些变通办法吗?

或检测到某些符号从未被测试使用过,并且没有给出链接错误?

0 个答案:

没有答案