有没有办法确保 clang 链接未引用的库符号
is there a way to ensure that clang links an unreferenced library symbol
我有一个链接到静态库的可执行文件。该库公开了一个符号 create_widget()。这个符号没有被 clang 链接到可执行文件中,因为它没有被可执行文件引用。
可执行文件链接到另一个库,该库在运行时可以引用可执行文件公开的任何符号。我需要让这个库看到 create_widget().
有什么好的方法可以解决吗?如果没有,我将与所有需要它的可执行文件共享 create_widget() 的源代码,而不是将其捆绑在一个库中。
有两种方法可以做到:-
1) Link 显式导出 create_widget()
的 目标文件 ,而不是
比从图书馆。这样它导出的任何符号都将被链接
它们是否被引用。
2) Link 带有选项 --whole-archive -lwidget --no-whole-archive
的静态库(比如 libwidget.a
)。
这样,libwidget
中的每个目标文件都将被链接,无论它是否包含任何
是否引用符号。
我有一个链接到静态库的可执行文件。该库公开了一个符号 create_widget()。这个符号没有被 clang 链接到可执行文件中,因为它没有被可执行文件引用。
可执行文件链接到另一个库,该库在运行时可以引用可执行文件公开的任何符号。我需要让这个库看到 create_widget().
有什么好的方法可以解决吗?如果没有,我将与所有需要它的可执行文件共享 create_widget() 的源代码,而不是将其捆绑在一个库中。
有两种方法可以做到:-
1) Link 显式导出 create_widget()
的 目标文件 ,而不是
比从图书馆。这样它导出的任何符号都将被链接
它们是否被引用。
2) Link 带有选项 --whole-archive -lwidget --no-whole-archive
的静态库(比如 libwidget.a
)。
这样,libwidget
中的每个目标文件都将被链接,无论它是否包含任何
是否引用符号。