首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有gcc8的生产环境中运行用gcc8构建的程序

在没有gcc8的生产环境中运行用gcc8构建的程序
EN

Stack Overflow用户
提问于 2020-03-08 13:23:56
回答 1查看 223关注 0票数 0

我的开发/生产环境都是CentOS-7.7。为了用gcc-8.3.0编译我的程序,我在我的开发环境上安装了"devtoolset-8“,但它不能像CentOS7附带的gcc-4.8.5那样使用。每次需要编译程序时,我都必须使用"scl enable devtoolset-8 -- bash“来切换到gcc8而不是gcc4.8.5。

当程序部署到producing env上时,既没有gcc8,也没有libstdc++.so.6.0.25,所以它无法运行。我想应该和gcc8一起发布libstdc++.so.6.0.25?我既不能在producing env上安装"devtoolset-8“,也不能在producing-env上从源代码构建gcc8。可以从CentOS的官方yum代码库安装的libstdc++版本是libstdc++.so.6.0.19,因此我的程序不能在producing env中加载。如何让这样的程序运行?

谢谢!请原谅我的丑陋英语。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-09 12:50:12

为了不必复制或发布单独的libstdc++.so,而是针对C++运行时静态链接(如注释中所建议的),可以使用-static-libstdc++链接C++程序(同时指定-static-libgcc还可以确保程序不依赖于系统上足够新的libgcc_s.so版本-尽管这不应该是问题)。

还可能存在目标系统的glibc版本太旧(相对于构建系统)的问题。在这种情况下,人们无论如何都可以编译gcc,无论旧系统上的版本有多新,这样生成的C++可执行文件以及libstdc++都可以链接到旧的glibc。将C++程序与-static-libstdc++链接将再次有助于不依赖于程序必须能够在运行时找到libstdc++.so

最后,C++程序也可以与-static链接,根本不依赖于任何动态库。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60584713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档