Как заставить MATLAB 2016a использовать gcc-4.7.x вместо того, что у меня есть (gcc-5.4.1)?

Есть несколько сообщений об этом для более старых выпусков MATLAB, но они, похоже, не работают для R2016a.

Я пытаюсь установить MatConvNet на Ubuntu 16.04. Когда я запускаю команду 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.

Я уже установил gcc-4.7 и g++-4.7, используя apt-get install gcc-4.7 g++-4.7. Как я могу заставить MATLAB использовать эти версии, а не версии по умолчанию?


person Dr. Prasanna Date    schedule 16.03.2017    source источник
comment
Выполнили ли вы шаги, представленные в документации?   -  person excaza    schedule 16.03.2017
comment
Да, но он либо просит изменить $PATH (что я не очень хочу делать), либо менять компилятор для каждого вызова mex. Можно ли изменить компилятор gcc, поддерживаемый mex, во время запуска Matlab?   -  person Dr. Prasanna Date    schedule 16.03.2017


Ответы (2)


Несколько советов, а не полный учебник, как это сделать. Вероятно, самым простым было бы отредактировать файл конфигурации 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++.

person Karel Lenc    schedule 28.03.2017

Это работает с R2016b:

  1. Установите необходимую версию GCC с помощью apt install (в моем случае 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, создайте файл с именем nvcc в папке ~/bin со следующим содержимым (не забудьте сделать его исполняемым: 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 и следуйте инструкциям по компиляции MatConvNet.
person faken    schedule 09.02.2018