我正在做一个项目,该项目需要在 Linux 机器上执行,结果证明它没有GLIBCXX_3.4.20
库的版本,但代码需要它。有没有办法找到我的代码(C++)的哪一部分要求这个版本?
objdump
我使用and读取了 ELF 文件realdef
,发现哪个符号需要它:
_ZSt24__throw_out_of_rang@GLIBCXX_3.4.20 (4)
但我不知道我的代码的哪一部分可以关联。
我正在做一个项目,该项目需要在 Linux 机器上执行,结果证明它没有GLIBCXX_3.4.20
库的版本,但代码需要它。有没有办法找到我的代码(C++)的哪一部分要求这个版本?
objdump
我使用and读取了 ELF 文件realdef
,发现哪个符号需要它:
_ZSt24__throw_out_of_rang@GLIBCXX_3.4.20 (4)
但我不知道我的代码的哪一部分可以关联。
你的问题本质上是这个问题的重复。
除了你的情况,它不是libc.so.6
,但这libstdc++.so
会给你带来麻烦。
您的问题是您正在使用新的 GCC 进行编译,但正在使用旧的libstdc++.so
.
你有几个选择:
libstdc++.so
-static-libstdc++
标志将所需的版本libstdc++
直接链接到您的应用程序中。这将生成一个更大的二进制文件,但它根本不会使用libstdc++.so
。libstdc++.so
的二进制文件可能无法在目标计算机上正确运行,因此应谨慎使用此解决方案。