【发布时间】:2017-07-10 20:00:04
【问题描述】:
假设我创建了一个包含数百个方法的类扩展,并将该类包含在我的项目中。
现在假设从那个扩展中,我只使用 2 或 3 种方法。请记住,类扩展有数百个方法。
当我编译代码时,二进制文件中会包含什么?
只是我从该类扩展中使用的方法还是所有方法,包括该特定项目未使用的方法?
【问题讨论】:
-
取决于您是使用静态链接还是动态链接。在动态链接中,仅包含使用过的符号名称。在静态链接中,如果您使用
--no-whole-archive之类的选项,则只会包含使用过的.o文件。否则,将包含整个.a文件。另请注意,不仅会调用您直接使用/覆盖的方法。这也是关于 vtables 和其他东西的。 -
谢谢。请将此作为答案,以便我接受。
标签: class compilation binary