【问题标题】:Downgrading C/C++ compiler on Fedora 23 to a MATLAB R2016a-compatible compiler将 Fedora 23 上的 C/C++ 编译器降级为与 MATLAB R2016a 兼容的编译器
【发布时间】:2016-06-12 13:40:58
【问题描述】:

我想从 C/C++ 源代码构建 MEX 函数以启用 MATLAB 脚本访问,但我当前版本的 Fedora 具有更新且不兼容的 GCC。我曾尝试删除已安装的 GCC 并使用 sudo dnf gcc-4.7.x (使用 x = [1, 2, 3, 4])安装 GCC 的 4.7.x 版本,但似乎这些版本都没有托管在Fedora 软件包存储库。

有没有其他方法可以在较新的 Fedora 版本上安装较旧版本的 GCC?

【问题讨论】:

  • 您是否真的在编译 mex 文件时遇到问题,或者它是否成功编译它们并仅显示警告。如果晚了,你可以忽略它。
  • @Suever 问题在于自己编译 mex 文件。较新版本的 GCC 与 MATLAB 不兼容。
  • 对。你没有回答我的问题。当您尝试编译它们时,MATLAB 是否发出警告或是否存在实际错误? MATLAB 很乐意使用不受支持的 GCC 版本进行编译,这样做只会给您一个警告。
  • 我相信它们是实际错误,而不仅仅是警告。它说类似“使用 mex 时出错:未找到支持的编译器或 SDK”
  • 好吧,那是有道理的,只是想澄清一下。谢谢。

标签: c++ linux matlab fedora fedora-23


【解决方案1】:

您必须下载 gcc 源代码,然后自己编译 gcc。 Fedora 存储库是特定于发行版的。 Fedora 早期版本的 gcc 不包含在 Fedora 的后续版本中。

虽然可以手动下载早期版本的 gcc,但由于版本冲突,rpm 不太可能同意安装它。有人可能会建议使用--force 强制安装不兼容的 gcc 版本。唉,这样的建议很可能会导致无法启动的砖块。

所以唯一实用的答案是自己下载和构建 gcc;使用将 gcc 安装到非默认位置的自定义配置,以避免覆盖系统安装的libstdc++。这不是一项简单的任务,几年前我自己就完成了这项工作。

TL;DR:如果你不得不问这样的问题,那是不可能的。

【讨论】:

  • 我明白了。谢谢您的答复。我相对是 Linux 的初学者,如果问的不是太多,你知道是否有任何关于如何做到这一点的指南吗?
  • 恐怕没有任何类型的“指南”。简短而粗略的回答是,“初学者”不太可能完成构建 gcc 自定义配置的任务。就像我说的,这不是一项微不足道的任务。对于两个在 C++ 和 Linux 工程方面拥有 40 年经验的高级开发人员来说,生成可重现的 gcc 自定义构建的任务需要几周时间才能完成。
【解决方案2】:

1) 您可以同时安装任意多个版本的 gcc/g++。 2) 删除系统编译器不是一个好主意。

Gcc-4.7 : 很简单,从“Redhat devtoolset-1.1”http://linux.web.cern.ch/linux/devtoolset/→→#wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo安装[所需的包]

devtoolset-1.1 和 devtoolset-2 是为 RHEL6 创建的,所以我们必须为 devtoolset-(1.1) 安装一些旧文件:compat-gmp-4.3.1-11.fc23.x86_64.rpmcompat-mpfr-2.4.1-7.fc23.x86_64.rpm .... 链接:compat-gmp @987654322 @-compat-mpfr https://drive.google.com/file/d/0B7S255p3kFXNOG8wYU1sY0lkQWc/view?usp=sharing

然后您可以使用 #dnf install --nogpgcheck devtoolset-1.1-gcc-c++ 安装来自 devtoolset-1.1 的 4 个包(gcc-c++ 和依赖项、、、gcc 等)

启用 gcc-4.7 : $ scl enable devtoolset-1.1 bash ... 和 gcc -v 将显示“gcc version 4.7.2”(该设置在您退出终端之前有效。)


【讨论】:

  • 谢谢,明天我可以访问我的 Linux 机器时试试这个。
猜你喜欢
  • 1970-01-01
  • 2016-09-27
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 2020-09-19
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多