Leo*_*eon 0 gcc centos yum libstdc++ devtoolset
我的开发/生产环境都是 CentOS-7.7。为了用 gcc-8.3.0 编译我的程序,我在我的开发环境中安装了“devtoolset-8”,但它不能像 CentOS7 最初附带的 gcc-4.8.5 一样使用。每次需要编译程序时,必须使用“scl enable devtoolset-8 -- bash”切换到gcc8而不是gcc4.8.5。
当程序部署到生产环境时,没有gcc8,也没有libstdc++.so.6.0.25,所以它不能运行。我猜 libstdc++.so.6.0.25 应该和 gcc8 一起发布?我既不能在生产环境上安装“devtoolset-8”,也不能在生产环境上从源代码构建 gcc8。CentOS官方yum repo安装的libstdc++版本是libstdc++.so.6.0.19,所以我的程序无法在production-env中加载。如何让这样的程序运行?
谢谢!请原谅我丑陋的英语。
小智 5
为了不必libstdc++.so
针对C++
运行时复制或发送单独的而是静态链接(如评论中所建议的),可以链接C++
程序-static-libstdc++
(同时指定-static-libgcc
还将确保该程序不依赖于最新版本的系统上的 libgcc_s.so - 尽管这应该很少成为问题)。
也可能存在目标系统版本glibc
太旧(相对于构建系统)的问题。在这种情况下,无论如何都可以编译gcc
旧系统上的最新版本,以便生成的C++
可执行文件以及libstdc++
与旧的glibc
. 将C++
程序与链接-static-libstdc++
将再次有助于不依赖于必须能够libstdc++.so
在运行时找到的程序。
最后,C++
程序也可以链接到-static
完全不依赖任何动态库。
归档时间: |
|
查看次数: |
210 次 |
最近记录: |