我在我的 Linux (Ubuntu) 机器上构建并安装了新版本,gcc
并将其安装在/opt/gcc-10.2.0
.
然后我曾经update-alternatives
将其设为默认gcc
/ g++
。
然而,它可以工作,用新版本构建的程序gcc
仍然链接到旧版本libstdc++
,/usr/lib/x86_64-linux-gnu
而不是 中找到的版本/opt/gcc-10.2.0/lib64
。
如果系统libstdc++
使用 C++11 之前的 ABI,则会出现问题,因为这会导致应用程序在启动期间崩溃。
有没有办法安装较新版本的 GCC 并使其成为用户的“默认编译器”,并确保用它构建的程序将链接到与该编译器捆绑的libstc++
(和libgcc
)?
我问这个问题是因为我想创建一个使用最新 GCC 版本的构建服务器。
答案1
- 这实际上很好,因为您编译的程序变得更加可移植。
- 您可以尝试添加
-L/opt/gcc-10.2.0/lib64
到您的编译标志中。 - 你可以
sudo mkdir /usr/lib64/save; sudo mv -iv /usr/lib64/libstdc++* /usr/lib64/save
- 不建议这样做。