Я использую 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
В первую очередь, попытайтесь найти релиз Ubuntu, который отсутствовал после выпуска требуемой версии GCC. Можно найти историю версий GCC на Выпусках GCC - Проект GNU - Фонд свободного программного обеспечения (FSF) и та из Ubuntu на истории версий Ubuntu - Википедия.
GCC 6.3 был выпущен 21 декабря 2016, и самым близким релизом Ubuntu была Ubuntu 17.04 (Пикантный Zapus), который был выпущен в апреле 2017. Можно использовать архивы Пикантных для установки этого. Но начиная с Пикантного достигнутого конца жизни путь назад в январе 2018, поэтому, его архивы были перемещены в Старые Выпуски. Устанавливать GCC 6.3 из его репозитория:
Добавьте репозиторий Пикантных и отключите репозиторий Вселенной Бионических, так как он содержит 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
Обновите доступную информацию о пакете и установите GCC 6.3.
sudo apt update
sudo apt install gcc-6
Добавьте GCC 6 как альтернативу для GCC.
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 1
Проверьте использование версии 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)
После того как Вы сделаны с "созданием", можно удалить установленный 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
Зафиксируйте символьную ссылку для /usr/bin/gcc
.
ln -sf /usr/bin/gcc-7 /usr/bin/gcc
Скомпилировать из исходного кода
Здесь я веду список всех доверенных пакетов 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