【发布时间】:2021-03-06 06:11:21
【问题描述】:
我有一个用主代码注册回调的库。不幸的是,这意味着除非库中引用了其他内容,否则库不会被拉入。我使用 -Wl,--whole-archive 在 .a 版本的库中修复了这个问题。不幸的是,它似乎不适用于 .so 库。无论主代码是否知道该库存在,该库都会修改主代码的功能,因此是否需要将库添加到链接中取决于是否需要其功能。
【问题讨论】:
-
所以我尝试过的一种解决方法是在另一个短 .c 文件中引用 .so 库并将其包含在链接中。这迫使包容。它有效,但它很丑。
-
您可以尝试使用
-Wl,--require-defined,LIB_FUNCTION将其中一个库函数标记为未定义。