Как использовать более старую версию 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

Любой совет значительно ценился бы! Я не эксперт, поэтому если бы Вы могли бы предложить определенные команды для следования, я был бы очень признателен за это. Ben

0
задан 23 April 2020 в 16:12

2 ответа

В первую очередь, попытайтесь найти релиз Ubuntu, который отсутствовал после выпуска требуемой версии GCC. Можно найти историю версий GCC на Выпусках GCC - Проект GNU - Фонд свободного программного обеспечения (FSF) и та из Ubuntu на истории версий Ubuntu - Википедия.

GCC 6.3 был выпущен 21 декабря 2016, и самым близким релизом Ubuntu была Ubuntu 17.04 (Пикантный Zapus), который был выпущен в апреле 2017. Можно использовать архивы Пикантных для установки этого. Но начиная с Пикантного достигнутого конца жизни путь назад в январе 2018, поэтому, его архивы были перемещены в Старые Выпуски. Устанавливать GCC 6.3 из его репозитория:

  1. Добавьте репозиторий Пикантных и отключите репозиторий Вселенной Бионических, так как он содержит 6.4, а также 6.5, который мог бы быть установлен при попытке установить 6.3.

    echo "deb http://old-releases.ubuntu.com/ubuntu zesty main" | sudo tee /etc/apt/sources.list.d/zesty.list
    sudo apt-add-repository -r universe
    
  2. Обновите доступную информацию о пакете и установите GCC 6.3.

    sudo apt update
    sudo apt install gcc-6
    
  3. Добавьте GCC 6 как альтернативу для GCC.

    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 1
    
  4. Проверьте использование версии GCC gcc -v. Необходимо получить вывод как:

    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper
    Target: x86_64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Ubuntu 6.3.0-12ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
    Thread model: posix
    gcc version 6.3.0 20170406 (Ubuntu 6.3.0-12ubuntu2) 
    
  5. После того как Вы сделаны с "созданием", можно удалить установленный GCC 6.3 и информацию о хранилище Пикантных. И повторно включите репозиторий Вселенной Бионических.

    sudo apt purge gcc-6
    sudo apt autoremove --purge
    sudo rm /etc/apt/sources.list.d/zesty.list
    sudo apt-add-repository universe
    
  6. Зафиксируйте символьную ссылку для /usr/bin/gcc.

    ln -sf /usr/bin/gcc-7 /usr/bin/gcc
    
1
ответ дан 25 April 2020 в 10:41

Скомпилировать из исходного кода

Здесь я веду список всех доверенных пакетов GCC для Ubuntu: Как мне использовать последнюю версию GCC в Ubuntu?

Если ваш GCC интереса нет, я не вижу никакого варианта, кроме как собрать свой GCC из исходников (или лучше портировать свой софт).

Проще всего проверить, поддерживает ли crosstool-NG эту версию. Здесь я привел пример: https://stackoverflow.com/questions/10412684/how-to-compile-my-own-glibc-c-standard-library-from-source-and-use-it /52454710#52454710

Если нет, вам просто придется бороться с инструкциями по ручной сборке, найденными в Google, например: https://stackoverflow.com/questions/26305738/can-i-build-gcc-for- arm-with-an-x64-one/26306591#26306591

1
ответ дан 15 July 2020 в 14:12

Другие вопросы по тегам:

Похожие вопросы: