gpt4 book ai didi

c++ - 寻找符号依赖的起源

转载 作者:太空狗 更新时间:2023-10-29 23:04:16 24 4
gpt4 key购买 nike

我正在从事一个相当大的项目,该项目具有大量外部依赖项。我在开发期间一直致力于调试构建。现在,当我尝试构建发行版时(很长一段时间后),我收到一条错误消息,指出未找到特定符号。特别是在我的例子中,链接器给我一个错误,说 start_thread_noexcept symbol is not found。这个符号预计会在 boost-thread 中找到,但是当我检查我使用 nm -G -D --demangle 的 boost-thread 版本时,我发现确实找不到这个符号(不过,我确实找到了一个名为 start_thread 的符号)。显然,可以在更新版本的库中找到 noexcept 符号。

但是,我的问题更为笼统。我现在要做的,就是找到这个符号要求的来源。我猜我一定有一些新的函数调用,它又调用了 start_thread_noexcept 函数。显然,在编译我的代码时必须生成一个 .o 文件,我可以追溯到这个要求。要么,要么我添加了一些新的第三方依赖项,这反过来又需要新版本的 boost-thread 库。我怎样才能找到什么代码/库需要这个 undefined symbol ?

最佳答案

我去了中间目录做了

for x in *.o; do echo $x; nm $x | grep "_ZN5boostlsIcSt11"; done

这让我能够追踪编译单元,这反过来让我(手动)找到有问题的代码。

关于c++ - 寻找符号依赖的起源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23210898/

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