我有一组来自第三方的绝对庞大的 .a 文件。我有自己的库,它只调用这组库中的 5 或 6 个函数。我想生成一个小得多的 .a 文件,其中包含我的代码及其在外部库中的(少量)依赖项。
具体来说:
我有的
外部.h
int foo(); int bar();
libexternal.a
0000000000000000 T foo() 0000000000000010 T bar()
图书馆.c
#include "external.h" int foo_wrapper() { return foo(); }
图书馆.h
int foo_wrapper();
我想要的是
我想创建一个文件libmylibrary.a
,其中包含符号 for foo_wrapper
、其依赖项foo
以及内部调用的任何内容foo
,但不是bar
(实际上代表了数千个函数)。这样,人们可以包含我的库,而无需包含external.h
或链接libexternal.a
. 我不愿意手动列出foo
,因为实际上有一大堆功能。
可以做到吗?
更多详情
我愿意列出我需要的符号。例如,我可以foo_wrapper
在命令行上指定。但我也不能foo
在命令行上指定,以及它调用的任何函数。我可以指定的原因foo_wrapper
是它允许我编写一个名为callEverything()
的函数,它只调用我想要提供的所有函数,然后将该符号放在命令行上。