提问人:arrowd 提问时间:10/12/2023 最后编辑:arrowd 更新时间:10/13/2023 访问量:46
对 LINK_WHAT_YOU_USE 和 Meson 的对应物感到困惑b_asneeded
Confusion about LINK_WHAT_YOU_USE and Meson's counterpart b_asneeded
问:
从我收集到的信息来看,当 Meson 执行 ELF 二进制文件的链接时,它默认通过将标志传递给链接器来修剪不需要的共享库。这个答案说标志使链接器遍历库列表,检查被链接的二进制文件是否真的使用它,如果没有,请将其从列表中删除。--as-needed
现在,CMake 有 CMAKE_LINK_WHAT_YOU_USE 变量,它似乎与 Meson 中的操作相同,尽管与 Meson 不同的是,它在 CMake 中默认为 OFF。但是,深入研究 CMake 内部,发现CMAKE_LINK_WHAT_YOU_USE实际上通过了,无论如何,这是默认行为:b_asneeded
--no-as-needed
% grep -r LINK_WHAT_YOU_USE_FLAG /usr/local/share/cmake/
...
Modules/CMakeCXXInformation.cmake: if(NOT DEFINED CMAKE_CXX_LINK_WHAT_YOU_USE_FLAG)
Modules/CMakeCXXInformation.cmake: set(CMAKE_CXX_LINK_WHAT_YOU_USE_FLAG "LINKER:--no-as-needed")
这让我感到困惑。使用时,我将如何删除未使用的库?CMAKE_LINK_WHAT_YOU_USE
答: 暂无答案
评论
--as-needed
--no-as-needed
ld