gpt4 book ai didi

linux - 自动选择静态库中的.o文件(.a文件)

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:45 25 4
gpt4 key购买 nike

我正在开发一个静态库 (libfb.a) 文件,其中包含两个函数的多个实现:

  • foo.c 包含 void foo() { ... }
  • bar.c 包含 void bar() { ... }
  • foobar.c 包含 void foo() { ... }void bar() { ... }

所有 3 个实现 (...) 都是不同的,因为如果 foobar 都需要,那么它们都可以相互利用,更有效地实现。

我如何将 .o 文件组合成 GNU ld 会自动选择的 .a 文件,即 gcc prog.c libfb.a

  • 如果 prog.c 调用 foo 而不是 bar,则在 libfb.a 中使用 foo.o;
  • 如果 prog.c 调用 bar 而不是 foo,则在 libfb.a 中使用 bar.o;
  • 如果 prog.c 调用 foobar,则将 foobar.o 与 libfb.a 一起使用。

我曾尝试使用弱符号和弱别名来做到这一点,但没有奏效。也许这是不可能的。有什么想法可以做到吗?

最佳答案

重复@A.Monti 的评论作为回答。

这是不可能的。您无法检测 prog.c 何时使用可用原语同时调用 foo 和 bar

关于linux - 自动选择静态库中的.o文件(.a文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42269766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com