【发布时间】:2022-01-20 04:35:01
【问题描述】:
我的主要可执行文件链接到一个静态库,其符号需要可用于通过 dlopen() 加载的动态库。我知道我需要使用-Wl,--export-dynamic,--whole-archive 标志才能使其工作。但是,在链接命令中指定了许多库,其中一些可能未使用,并且我在当前构建基础架构中通过 cmake 选择性地将 --whole-archive 应用到所需的库时遇到了困难。我所看到的是,如果只使用 -Wl,--export-dynamic 并且可执行文件调用感兴趣的静态库中的函数,那么整个库将被包含到为它指定 --whole-archive 的相同效果,这正是我需要。我可以依靠这种行为来隐式地将 --whole-archive 强加于可执行文件引用其符号的库吗?
【问题讨论】: