相关疑难解决方法(0)

如何使用比系统运行时支持更高版本的 GCC?用它构建的软件可以在仅安装普通软件包的系统上运行吗?

我不太使用 Ubuntu,作为一个主要是红帽企业及其类似组织的组织中的平台和构建工程师。

仅仅构建和使用最新的 GCC 的问题是语言运行时库。我要么必须分发它们,使运输复杂化并使律师对 GPL 感到紧张,要么要求我的客户构建和安装相同的 GCC。

我生产闭源商业软件,主要是数学建模,从 C 和 C++ 源代码编译并作为共享库提供。这意味着我对实现跨发行版二进制兼容性非常感兴趣。这是实用的,因为我的库所需的一切都可以从 glibc 和 GCC 语言运行时(libgcc_s.so.1libstdc++.so.6)获得。这两套库都具有非常强的向前兼容性,因为符号都经过版本控制,并且每次行为更改时都会创建新版本。

目前,我在 RHEL 8.x 上进行构建。它有相当旧的 GCC (8.x) 和 glibc (2.28),所以如果我天真地使用它构建我的库,我将向前兼容具有这些库的相同或更高版本的 Linux。然而,旧的 GCC 无法处理开发人员非常想要使用的 C++20 语言标准,更不用说新的 C++23 标准了。RHEL 为此提供了解决方案,但我还没有找到 Ubuntu 的类似解决方案。

Red Hat 解决方案是一个“GCC 工具集”。这些方法有很多,但它们的工作方式都是相同的。它们提供了 GCC 的更高版本(专为在 RHEL 8.x 的运行时上运行而构建)、标准标头以及一些 GNU 的特殊脚本ld。这些脚本告诉链接器尽可能使用 GCC 语言运行时的系统库,对于系统库中没有的函数,将所需的代码静态链接到所链接的共享库(或可执行文件)中。这听起来很可怕,但效果非常好。这可能是因为红帽是 GCC 的主要贡献者并确保它保持正常运行。

Ubuntu有类似的东西吗?我希望有一个 Red Hat 的替代品,以防他们利用 GPL 漏洞成功地消除了他们操作系统的类似工作,因为在每台测试机器上运行它的成本太高。

我目前对 Ubuntu 编译和运行时的了解在我对相关问题的回答中进行了解释

对于 C++20 情况,迁移到 Ubuntu LTS 22.04 就可以满足需求。然而,C++23 开始出现。我们预计 Ubuntu LTS …

compiling gcc

5
推荐指数
1
解决办法
661
查看次数

如何在 Ubuntu 上使用最新的 GCC?(Ubuntu 18.04;gcc 8.1)

Ubuntu 当前提供 gcc 7.3 版,但当前提供 gcc 8.1 版。我想将 gcc 8.1 与 gcc 7.3 一起安装(这样,如果我调用 c++,它会调用 gcc 7.3 的版本,如果我调用 c++-8,它会调用 8.1 的版本)。

我尝试按照此问题中概述的说明进行操作(但将 4.9 替换为 8.1),但 gcc 8.1 不在问题中列出的存储库中:

$ sudo apt-get install gcc-8.1
[sudo] password for sky: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package gcc-8.1
E: Couldn't find any package by glob 'gcc-8.1'
E: Couldn't find any package by regex 'gcc-8.1'
Run Code Online (Sandbox Code Playgroud)

如何在 ubuntu 18.04 中安装 gcc 8.1?

编辑:这个问题不是重复的,因为 …

gcc c++ software-installation 18.04

4
推荐指数
1
解决办法
2万
查看次数

如何在 ubuntu 16.04 lts 上获取最新版本的 gcc

嘿伙计们,我是新手,刚刚开始学习计算机科学和编程,这是我第一次使用 linux。那么如何在 ubuntu 上获取最新版本的 gcc 或者它是否有所作为(我现在使用 5.4)。

versions gcc

3
推荐指数
1
解决办法
3万
查看次数

如何使用旧版本的 GCC

我正在使用 Ubuntu 18.04.4 LTS,我正在尝试按照他们的在线说明编译一个基于 MATLAB 的程序 (SPM12),我相信我遇到了 GCC 版本“太”的问题新的'。当我到达我的命令所在的过程中的一个步骤时make && make install,我收到以下错误消息:

Warning: You are using gcc version '7.5.0'. The version of gcc is not supported. The version currently supported with MEX is '6.3.x'. For a list of currently supported compilers see: https://www.mathworks.com/support/compilers/current_release.
/usr/bin/ld: cannot find -lstdc++
collect2: error: ld returned 1 exit status

Makefile:247: recipe for target 'spm_sample_vol.mexa64' failed
make: *** [spm_sample_vol.mexa64] Error 255
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激!我不是专家,所以如果你能提供具体的命令来遵循我真的很感激。本

gcc

3
推荐指数
1
解决办法
7594
查看次数

apt install g++-10 安装 clang-10 而不是 g++-10

我正在使用 Ubuntu 18.04 LTS,当我尝试安装 g++-10 时:

sudo apt install g++-10
Run Code Online (Sandbox Code Playgroud)

它安装了 clang-10,但我不需要 clang-10,我严格需要 g++-10

package-management 18.04

3
推荐指数
1
解决办法
2205
查看次数