【问题标题】:Linux - Running Executable Error (GLIBCXX_3.4.21 not found)Linux - 运行可执行错误(未找到 GLIBCXX_3.4.21)
【发布时间】:2016-11-21 15:14:07
【问题描述】:

我正在尝试将我的应用程序部署为可以在任何 Linux 机器上运行的独立应用程序。我已经在 Qt Creator 下构建了我的应用程序,并成功地静态链接了我的应用程序。但是,当我在另一台 Linux 机器上测试应用程序时,我收到以下错误:

libstdc++.so.6: version 'GLIBCXX_3.4.21' not found (required by ./Executable)

我不确定如何解决此错误。

【问题讨论】:

    标签: linux qt


    【解决方案1】:

    这是我自己的一个错误,但在另一种情况下。 这意味着:libstdc++.so.6(共享对象文件,c++ 程序的标准库,许多程序可以一起使用(共享))是您编译的程序所需的另一个版本。

    我从 gcc-4.8 切换到 gcc-5 时遇到了这个问题。

    您在编译和执行时使用过不同的 linux 发行版吗? (Ubuntu?)

    您必须确保版本匹配,或者将使用的 libstdc++ 静态编译到您的二进制文件中。

    这是一个与此类问题相关的 SO 问题。 GLIBCXX versions

    【讨论】:

    • 按照已经建议的方式静态编译。请编辑您的帖子,以包含您要运行软件的目标操作系统的名称和版本。可以使用 libstdc++.so.6.0.21 的副本,然后使用启动脚本指向它。 但是:libstdc++.so.6.0.21 必须针对旧版操作系统进行编译。到目前为止,EL7 的版本,Fedora ~19 可用drive.google.com/file/d/0B7S255p3kFXNNTIzU2thRlZmYVE/…
    • 您能告诉我如何将 libstdc++ 库静态编译到我的二进制可执行文件中吗?
    • 首先:请在所有目标操作系统上使用ldd 检查您的程序:ldd [executables](和ldd [libraries],如果有的话。)即libstdc++.so.6.0.21 可能不是唯一的要求。
    • 我自己没有这样做,但这些来源似乎是一个起点:trilithium.com/johan/2005/06/static-libstdcstackoverflow.com/questions/13636513/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    相关资源
    最近更新 更多