gpt4 book ai didi

c++ - CMake链接阶段问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:26 29 4
gpt4 key购买 nike

我目前正在构建一个相当大的应用程序,使用 cmake 生成跨平台构建脚本。在将 cmake 构建脚本放在一起的过程中,我发现了 gcc 链接行排序的痛苦。

基本问题是,以错误的顺序包含静态库会导致未使用的库符号被丢弃,后续依赖库将无法找到这些符号。

因此,我遇到的情况是 cmake 生成了一个可以正常编译的 visual studio 构建系统,但 unix makefile 会抛出各种“ undefined symbol ”错误。我已经找到解决这个问题的方法 - 在 add_executable 命令中,我包含了两次静态库。

我希望有一个更标准/更好的方法来处理这个问题。因为我不是唯一的开发人员,而且大部分常规开发都是在 Windows 中完成的,所以我真的想要一个链接顺序不可知的 CMake 脚本。 Windows 开发人员只是不处理这个链接顺序问题。最重要的是,找出正确的顺序将非常困难 - 我没有现成的信息,而且有很多静态库(70 个左右)。

在互联网上搜索后,我确实了解了 -static 和 -dynamic 标志,但让 CMake 包含它们并不明显,gcc 提示无法找到动态库。

无论如何,我欢迎就如何做正确的事情提出建议。

最佳答案

您是否尝试禁用 strip ?也许用 cmake -DCMAKE_STRIP=/bin/true .. 之类的东西?也许这会阻止符号被丢弃。

关于c++ - CMake链接阶段问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3321211/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com