【问题标题】:How to force MATLAB 2016a to use gcc-4.7.x instead of the one I have (gcc-5.4.1)?如何强制 MATLAB 2016a 使用 gcc-4.7.x 而不是我拥有的 (gcc-5.4.1)?
【发布时间】:2017-03-16 10:04:23
【问题描述】:

有一些关于旧版本 MATLAB 的帖子,但它们似乎不适用于 R2016a。

我正在尝试在 Ubuntu 16.04 上安装 MatConvNet。当我按照here 的描述运行vl_compilenn 命令时,它会给我一个警告,如下所示:

Building with 'gcc'.
Warning: You are using gcc version '5.4.1'. The version of gcc is not supported. 
The version currently supported with MEX is '4.7.x'. For a list of currently supported 
compilers see: http://www.mathworks.com/support/compilers/current_release.

我已经使用apt-get install gcc-4.7 g++-4.7 安装了 gcc-4.7 和 g++-4.7。如何强制 MATLAB 使用这些版本而不是默认版本?

【问题讨论】:

  • 你按照provided in the documentation的步骤操作了吗?
  • 是的,但它要么要求更改$PATH(我不太愿意这样做),要么为每个mex 调用更改编译器。 matlab启动时是否可以更改mex支持的gcc编译器?

标签: matlab ubuntu-16.04 gcc4.7 g++-4.7 matconvnet


【解决方案1】:

很少有提示,不是完整的教程。 可能最简单的方法是编辑 MATLAB 的 Mex XML 配置文件:

mex -setup C
cc = mex.getCompilerConfigurations('C', 'Selected')
edit(cc.MexOpt)

mex 设置通常会在您的主文件夹 (~/.matlab/<version>/mex_C_glnca64.xml) 中创建一个副本,因此您应该能够在没有 root 用户的情况下对其进行编辑。

您可能需要更改部分:

<GCC>
    <cmdReturns name="which gcc" />
</GCC>

我猜它会搜索 gcc 命令的位置到您的 gcc 版本并将其分配给 $GCC 变量。另外,您可以更改标题中的版本名称。

此外,您需要对 C++ 语言执行相同的操作。

【讨论】:

    【解决方案2】:

    这适用于 R2016b:

    1. 使用 apt install 安装所需的 GCC 版本(在我的例子中是 gcc-4.9 和 g++-4.9)。

    2. 在您的家中创建一个bin 文件夹,即~/bin

    3. 使用ln 创建以下链接:

      • ln -s /usr/bin/gcc-4.9 ~/bin/gcc
      • ln -s /usr/bin/g++-4.9 ~/bin/g++
    4. 如果使用 CUDA,请在 ~/bin 文件夹中创建一个名为 nvcc 的文件,内容如下(不要忘记使其可执行:chmod +x ~/bin/nvcc):

    内容:

    #!/bin/sh
    exec /usr/lib/nvidia-cuda-toolkit/bin/nvcc -ccbin gcc-4.9 "$@"
    

    如有必要,将/usr/lib/nvidia-cuda-toolkit/bin/nvcc 替换为nvcc 二进制文件的正确位置。

    1. 打开 MATLAB 并按照instructions 编译 MatConvNet。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多