Как обновить gcc windows

Как обновить GCC в MinGW на окна?

Я’м использоваться, чтобы вручную установить GCC из исходников на Ubuntu и это был болезненный процесс. Так что я действительно не’т хочу повторить этот процесс. В настоящее время, у меня MinGW и GCC и (4.6.2) установлен на моей машине. Так есть ли простой способ обновить GCC без полностью сборки из исходных текстов? Кто-нибудь делал это раньше, может поделитесь мне несколько советов?

  1. Выполнение Shell (cmd или Ш)
  2. Обновить список пакетов (требуется подключение к интернету):

по MinGW-сделать обновление

  1. После этого запустить обновление

`по MinGW-сделать апгрейд

После этого пакеты по MinGW должен быть обновлен до последней версии.

Существует также версия GUI названием `Менеджер установки помощью MinGW и расположены обычно в

Обновление: по состоянию на ноябрь-5-2012, по MinGW включает в себя 4.7.2 компилятора GCC, который является самой последней версией. Я лично буду использовать пакета MinGW, поскольку она включает в себя префикса msys и других инструментов, а так как это де-факто стандарт, я надеюсь, что он лучше поддерживается. Единственный недостаток-в комплекте GDB не включать скрипты на Python, но я думаю, что может быть обновлен отдельно.

Я не’т знать, если вы можете обновить GCC в MinGW, но есть альтернативные проекты к MinGW с новыми версиями GCC.

В по MinGW-сборки проект предоставляет пакет похожие к MinGW, но с обновленным ССЗ (4.7.2). Я извлек файлы c:\MinGW (так что я могу использовать тот же путь) после переезда мой существующий компилятор MinGW в другую папку. Только по MinGW имеет префикса msys, так что если вам нужно, что (я) скопировать папку префикса msys от оригинала по MinGW.

После установки MinGW-сборки, результат G++ —версия:

Последние ССЗ, который поставляется со стандартными MinGW-это в настоящее время 4.7.0. Я собрал несколько простых проектов в код::блоки, так и последний wxWidgets, в источник, и все, кажется, работает.

Это’s стоит отметить, что компилятор MinGW-сборки включает скрипт Python с поддержкой версию GDB, в случае, если вы хотите стл довольно поддержка принтера, или другие БГД питон особенности.

Другой хороший выбор ТДМ-НКУ, который является проектом, который находится впечатляющая инсталлятор, который включает в себя обновленный компилятор GCC (4.7.1) и средства поддержки. Это автономный пакет. Насколько я могу судить, скриптов Python не поддерживается в GDB, который идет с этим пакетом.

Обновление GCC

Данный документ показывает пользователям процесс обновления GCC.

Обратите внимание, что понижение версии GCC может иметь нежелаемые побочные эффекты. Обратитесь к секции решения проблем для информации по часто встречаемым проблемам.

Contents

Вкратце

Следующий раздел быстро введет вас в процесс обновления GCC (и того, как просто его сделать). Больше деталей предоставлено в следующем разделе Объяснение обновления GCC.

Большинство обновлений GCC так же просты, как смена версии компилятора (тут с 5.4.0 на 6.4.0) и пересборка libtool :

Проверьте текущую версию и удалите старую версию:

После этого, убедитесь в целостности системы, запустив revdep-rebuild:

Наслаждайтесь новым компилятором!

Объяснение обновления GCC

Обновление GCC всегда считалось какой-то мистикой, с предположениями от «пользователям ничего не нужно делать» до «пользователям нужно дважды пересобрать всю свою систему». Большинство страха, неуверенности и сомнений проистекает из проблем, связанных с несовместимостью ABI. Такое редко происходит в наши дни (и когда происходит, это анонсируется). Но, сначала кратко о libtool .

libtool

Причина, по которой нужно пересобирать libtool после обновления версий gcc это потому, что главной функцией libtool является объединение кода, зависящего от платформы в общем интерфейсе, что позволяет приложениям использовать разделяемые библиотеки без нужды иметь дело с вещами, зависящими от платформы для разделяемых библиотек. Чтобы реализовать эту функцию, скрипт libtool использует различные пути до библиотек, в которых есть жестко заданная информация о версии gcc .

Изменения ABI

ABI, или Двоичный интерфейс приложений, это набор соглашений, используемых всеми инструментами, работающими с бинарным видом программ, например, компиляторы, ассемблеры, линкеры и поддержка рантайма для языков (источник: Бинарная совместимость GCC). Когда ABI, используемый для бинарных приложений и библиотек меняется, появляется риск получить ошибку компоновщика, либо неработающие программы, если только вы не пересоберёте все программы, использующие код C++.

Читайте также:  Как показывать скрытые папки линукс

Да, C++, поскольку в большинстве случаев несоответствия обнаруживаются на уровне двоичного интерфейса приложений C++. Если вы обновляетесь до GCC 4.1, или GCC 5.1, вы, вероятно, столкнетесь с проблемами в двоичном интерфейсе. Чтобы избежать этого должна быть запущена команда revdep-rebuild для libstdc++.so.5 (от GCC 3 до GCC 4.1), или libstdc++.so.6 (от GCC 4 до GCC 5.1).

Так почему же это нужно только до GCC 3.4.0/4.1/5? Это потому что с этой версии GCC использует обратно-совместимое ABI, и пересборка приложений и библиотек больше не требуется. Конечно, мы не можем дать вам гарантию, что так будет вечно, но если снова возникнет несоответствие, мы явно опишем этот случай здесь. В этом случае, скорее всего, будет увеличена версия библиотеки libstdc++.so .

Особый случай C++11 (и C++14)

В то время как GCC (или точнее libstdc++) идет большими шагами вперед, гарантируя стабильность ABI, эта гарантия не распространяется на все части C++ в libstdc++. Формально, начиная с версии 3.4, GCC/libstdc++ только гарантируется стабильность C++98/C++03 ABI и не более. Это очень важно для пакетов, которые зависят от C++11. GCC даёт гарантию на стабильность C++11 ABI, начиная только с версии 5.1. Это означает, что переключение (даже незначительные) версии GCC (скажем, от 4.7.3 -> 4.7.4) может привести к поломке ABI для бинарных файлов, собранных из C++11 кода.

Более подробную информацию и некоторые примеры можно найти здесь:

Какие пакеты определенно нужно пересобрать?

В следующей таблице приведены пакеты, которые нужно пересобрать, если они установлены, и причины этой необходимости.

Пакет Нужно пересобрать, потому что .
sys-devel/libtool приложение libtool имеет внутри себя вшитые пути к встроенным библиотекам GCC
sys-devel/llvm зависит от конкретной версии GCC, могут возникнуть ошибки линкования с другими ебилдами, использующими LLVM (к примеру, media-libs/mesa), если их не пересобрать.
sys-devel/clang зависит от конкретной версии GCC, может зависеть от sys-devel/llvm.

Также известны случаи, когда пакеты должны быть собраны одним и тем же компилятором (к примеру, различные qt-* пакеты). Эти пакеты чаще всего обновляются сопровождающими пакета одновременно (поэтому они всегда будут собираться одной и той же версией GCC). Выборочная переустановка таких пакетов часто сопровождается проблемами.

Пересборка всего

Некоторые люди клянутся, что нужно пересобрать все пакеты на их системе при выходе новой версии GCC. Конечно, в этом нет смысла, так как многие приложения не используют GCC для процесса сборки и установки, и на них вообще не распространяется это изменение.

Это, однако, не означает, что они полностью неправы: новые версии GCC часто предлагают более хорошую поддержку набора инструкций процессора, а это может повлиять на производительность приложений в лучшую сторону.

Кроме таких «небольших» плюсов, пересборка всего с нуля может быть обязательна в некоторых случаях, чтобы исправить проблемы без очевидных причин.

Некоторые проблемы с программами исконно трудны в диагностике, но их можно решить простой пересборкой одного или больше соответствующих пакетов. Если подобная проблема возникла после обновления GCC и сохранилась после применения revdep-rebuild как показано выше (и после пересборки прочих очевидно связанных пакетов), полная пересборка системы может решить этот вопрос.

Самый «безопасный» (но также затратный по времени) способ этого достичь — использование опции —emptytree ( -e ) для emerge, чтобы пересобрать системные пакеты и мир:

Пользователям рекомендуется попробовать этот подход, прежде чем писать о багах, которые могли произойти из-за обновления GCC.

(Заметьте, что команды выше пересоберут пакеты в системном наборе дважды, что необходимо, дабы быть «абсолютно уверенными», что каждый пакет был собран в одинаковой [предположительно] «безпроблемной» среде. Любые проблемы, что сохраняются после этого — действительно баги, о которых нужно сообщить, или серьёзные проблемы с конфигурацией системы.)

Устранение проблем

пересборка boost

Если dev-libs/boost нужно пересобрать, вы получите следующее сообщение об ошибке:

Пересобрать можно с помощью:

libstdc++.so.6: version `GLIBCXX_3.4.15′ not found

В процессе обновлений вы можете встретить ошибку, похожую на следующую:

Это означает, что вы пытаетесь собрать пакет более старой версией GCC, чем собирались библиотеки, от которых зависит пакет. Помните, мы говорили, что C++ ABI обратно совместим? Это так, но означает только, что для сборки приложений и линковки библиотек могут использоваться более новые (или те же самые) версии GCC (по сравнению с версией GCC, использованной для сборки этих библиотек).

Читайте также:  Windows 10 резервирование что это

Для пересоборки всех зависящих от libstdc++ смотрите пример команды revdep-rebuild в предыдущем разделе.

Обновить GCC

ос : Centos 5.7 i386 Package gcc-4.1.2-51.el5.i386 Подскажите как обновить gcc , буду признателен за ману от а до я. Зарание благодарен!

PS: ../gcc-4.6.2/configure checking for objdir. .libs checking for the correct version of gmp.h. no configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+. Try the —with-gmp, —with-mpfr and/or —with-mpc options to specify their locations. Source code for these libraries can be found at their respective hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/. See also http://gcc.gnu.org/install/prerequisites.html for additional info. If you obtained GMP, MPFR and/or MPC from a vendor distribution package, make sure that you have installed both the libraries and the header files. They may be located in separate packages.

а по рукам? в репах-то нету чтоль? и да,

Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+

ясно обо всем говорит. скачай сорцы для gmp, mpfr и mpc и распакуй в ../gcc-4.6.2

Скачал сорцы,рапаковал. tar xvfz mpc-0.8.0.tar.gz -C gcc-4.6.2 tar xvfz mpfr-2.3.1.tar.gz -C gcc-4.6.2 tar xvfz gmp-4.2.tar.gz -C gcc-4.6.2

configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+. Try the —with-gmp, —with-mpfr and/or —with-mpc options to specify their locations. Source code for these libraries can be found at their respective hosting sites as well as at ftp://gcc.gnu.org/pub/gcc/infrastructure/. See also http://gcc.gnu.org/install/prerequisites.html for additional info. If you obtained GMP, MPFR and/or MPC from a vendor distribution package, make sure that you have installed both the libraries and the header files. They may be located in separate packages.

Снова по рукам ?) я только учусь(

В репозиториях есть gcc4.4, ставь его.

Какая причина обновления компилятора?

в системе какие версии gmp, mpc, mpfr установлены? если подходящие, доставь соответствующие *-devel пакеты

Тогда повторю вопрос Slavaz: Какая причина обновления компилятора?Дело в том, что обновление GCC — задача нетривиальная, и у тебя должны быть веские причины на это.

Не для CentOS, но почитай вот это; думаю, принципы схожи: http://www.gentoo.org/doc/ru/gcc-upgrading.xml

Для Ъ пару цитат:

«Вообще говоря, переход на версии с исправленными ошибками (bugfix release), как с 3.3.5 на 3.3.6, должен быть довольно безопасен: надо только установить новую версию, переключиться на нее и пересобрать единственный затрагиваемый пакет — libtool. Однако, при некоторых обновлениях GCC нарушается двоичная совместимость, в таких случаях может потребоваться пересборка не только затрагиваемых пакетов, но и даже всего системного набора и пакетов, необходимых для компиляции.»

Gentoo-specific: «Если вы устанавливаете новую версию GCC, система не переключается на ее использование автоматически.»

«Всегда используйте одну и ту же версию GCC для своего ядра и дополнительных модулей ядра. Как только вы пересоберете world с новым GCC, внешние модули (например, app-emulation/qemu-softmmu) не смогут загрузиться. Пожалуйста, чтобы это исправить, пересоберите свое ядро новой версией GCC.»

нужно пересобрать ядро , в makefile не все CFLAGS работают с старым gcc. Если я правильно понял то правильно было бы поставить новый gcc и после собрать ним новое ядро. Только я не компетентен в том что бы обновить gcc.

Как обновить GCC в MinGW на Windows?

Я привык вручную устанавливать GCC из исходного кода раньше на Ubuntu, и это был болезненный процесс. Поэтому я действительно не хочу повторять этот процесс. В настоящее время на моей машине установлены MinGW и GCC (4.6.2). Итак, есть ли простой способ обновить GCC, не создавая его полностью из исходного кода? Кто-нибудь делал это раньше, может поделиться со мной некоторыми советами?

7 ответов

Попробовав это тап_п(недействительными) < инт a[10]; a[20]=5; >gcc-Стена-O2 main.c Это не дает мне никакого предупреждения. Это gcc в пределах windows (mingw), и я не могу обнаружить такого рода ошибку граничного предела как сказать компилятору, чтобы он это проверил? может ли mingw сделать.

Читайте также:  Mac os ошибка прошивки

Если я создам статическую библиотеку с llvm-gcc, а затем свяжу ее с программой, скомпилированной с использованием mingw gcc, будет ли результат работать? То же самое для других комбинаций llvm-gcc, clang и нормального gcc. Мне интересно, как это работает на Linux (используя обычные не mingw gcc.

Обновление с помощью terminal:

Запустите командную строку/terminal ( cmd или sh ).

Обновите список пакетов:

После обновления списка пакетов запустите:

Когда команда завершит выполнение, все ваши пакеты будут обновлены.

Обновление с версии GUI :

Если вы не привыкли к terminal, существует также версия GUI MinGW под названием «MinGW Installation Manager», которая обычно находится по адресу:

Когда GUI будет открыт, нажмите Installation -> Update Catalogue . Это приведет к обновлению списка пакетов.

После этого нажмите Installation -> Mark All Upgrades . Это позволит выбрать все пакеты, которые могут быть обновлены.

Наконец, нажмите Installation -> Apply Changes , чтобы применить обновления.

Обновление: по состоянию на Nov-5-2012, MinGW включает в себя 4.7.2 компилятора GCC, который является самой последней версией. Я лично буду использовать пакет MinGW, так как он включает в себя MSYS и другие инструменты, и так как это стандарт defacto, я надеюсь, что он лучше поддерживается. Единственным недостатком является то, что включенный GDB не включает в себя Python сценариев, но я думаю, что его можно обновить отдельно.

Я не знаю, можно ли обновить GCC в MinGW, но есть альтернативные проекты для MinGW с более новыми версиями GCC.

Проект MinGW-builds предоставляет пакет, аналогичный MinGW, но с обновленным GCC (4.7.2). Я извлек файлы в c:\MinGW (чтобы использовать тот же путь) после перемещения существующего MinGW в другую папку. Только MinGW имеет MSYS, так что если вам это нужно (я это сделал), скопируйте папку msys из исходного MinGW.

После установки MinGW-сборки, результат g++ —version:

Последняя версия GCC, которая поставляется со стандартом MinGW, в настоящее время является 4.7.0. Я собрал несколько простых проектов в Code::Blocks и последний источник wxWidgets, и все, кажется, работает.

Стоит отметить, что MinGW-build включает в себя версию Python с поддержкой скрипта GDB, если вам нужна поддержка STL pretty printer или другие функции GDB Python.

Еще один хороший выбор- TDM-GCC, который представляет собой проект, в котором размещен впечатляющий установщик, включающий обновленный компилятор GCC (4.7.1) и инструменты поддержки. Это автономный пакет. Насколько я могу судить, сценарий Python не поддерживается в GDB, который поставляется вместе с этим пакетом.

Наконец, есть проект MinGW-w64 , который является fork из MinGW. Rubenvb, который опубликовал ответ на этот вопрос, имеет хорошие автономные пакеты (в папке personal build) на основе этого проекта, которые включают в себя обновленный GCC (4.7.2). Включенный GDB, по-видимому, является включенным сценарием Python.

Возможно ли сосуществование двух версий GCC: родной версии windows MinGW и версии cygwin linux? Все становится проблематичным, когда на Cygwin система пытается скомпилироваться с версией MinGW GCC, и наоборот. Как я могу сохранить обе версии GCC?

У меня есть похожая или, возможно, та же проблема, что и у некоторых других, которые я видел, но я не уверен. Я использую копию mingw gcc непосредственно из командной строки windows для файлов в моем личном каталоге, и я отредактировал PATH, чтобы включить C:\MinGW\bin Следующий: gcc -o print.

Я построил более современный GCC 4.7 (он построен в рамках замораживания кода, так что он должен быть эквивалентен выпуску). Кроме того, эта сборка содержит поддержку .

Пакет -gcc _linux-это то, что вам нужно, если вы хотите использовать его на Linux. Просто извлеките где-нибудь и добавьте каталог mingw??/bin в PATH.

PS: есть собственный компилятор Windows и сборка Windows Clang. Я предлагаю использовать Clang только с одной из моих сборок GCC 4.6, так как у нее есть проблемы с GCC 4.7’s libstd++. Извлеките пакет Clang в тот же каталог, что и пакет GCC, и он будет работать из коробки.

если вы используете MSYS2 , просто откройте mingw64-console и введите:

Оцените статью