| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > GNU toolchain > Пытаюсь подключить GCC for ARM к Code Blocks IDE |
| Автор: Курсант 2.6.2014, 19:17 |
| Здравствуйте! Пытаюсь разобраться с компиляторами для ARM из коллекции GCC. А именно, не могу понять, для чего мне нужен MinGW (minimalistic gnu for windows). Насколько я понял, MinGW это какой-то набор утилит, имеющий довольно опосредованное отношение к самой компилляции, и я не могу понять, зачем мне эта красота на винде нужна? Если я правильно понимаю, компилятор, линковщик и другие нужные мне штуки - это в любом случае утилиты, скомпилированные под Windows. Скачанный MinGW отпугнул меня какими-то непонятными пунктами в опциях, необходимостью что-то "собирать аналогично сборке в Linux" и прочими совершенно излишними танцами с бубном. Скажите, можно ли тупо скачать нужные мне утилиты (компилятор, линковщик, make-файл и что там ещё бывает, я не знаю) архивом, распаковать их в поддиректорию Code Blocks, прописать пути к ним в настройках IDE и пользоваться? Когда-то давно с GCC для Windows у меня такое прокатило (использовал компилятор в своей программе для перекомпиляции dll во время работы программы), а вот с ARM не въеду, да и забыл всё... Спасибо за внимание, сильно не бейте если что |
| Автор: bsa 4.6.2014, 14:49 |
| Курсант, причем тут GCC for ARM? Mingw - это GCC for Win32/64. Просто кроме самого компилятора есть еще ряд утилит, библиотек и файлов, без который ты ничего не скомпилируешь. В частности, нужна стандартная библиотека С, утилиты для работы с исполняемыми файлами (в т.ч. и линкер), программа make (не будешь же ты вызывать компилятор и утилиты каждый раз вручную или из батника)... Зачем для GCC for ARM понадобился mingw мне вообще не понятно. Скорее всего нужен только make и стандартные программы типа cp, mv, grep и пр., но это уже Msys... Если ты собрался собирать кросскомпилятор GCC сам, то очень тебе сочувствую. С твоим уровнем знаний компилятор ты сможешь собрать примерно через месяц (если заниматься этим по 40 часов в неделю), не раньше. А вот чтобы заставить его работать, может уйти еще один месяц. Так что, подумай, может стоит взять готовый, например отсюда: http://gnutoolchains.com/download/ (выбирай arm-elf) Короче, уточни в документации, что же все-таки тебе нужно от mingw и какое он отношение имеет к тулкиту для arm. |
| Автор: bsa 6.6.2014, 18:18 |
| AVR - это несколько другая архитектура. Я тебе же кинул ссылку, где можно загрузить готовый toolchain для ARM. Ты можешь установить Visual Studio и научиться пользоваться nmake. Но mingw значительно меньше. А потом, для работы make не нужны все утилиты. Он работает хорошо и без них. Просто многие проги позволяют писать сложные обработчики файлов без программирования на С/С++. Если тебе не нужна какая-либо обработка, то проблем не будет с голым make. Поищи makefile от winavr, там немного доработать и будет собирать под ARM. |
| Автор: Курсант 9.6.2014, 10:27 |
| Спасибо |
| Автор: bsa 9.6.2014, 14:12 |
| возможно, у тебя оптимизация отключена (для контроллеров нужно использовать -Os), включен не тот набор инструкций (-marm вместо -mthumb), создается отладочная информация (добавь -g0), линкуются лишние библиотеки. |
| Автор: Курсант 10.6.2014, 07:45 |
| Спасибо, отладочную информацию убрал, для elf-файла получилось 104 кб, для bin - 45 кб |
| Автор: LeonidPr 10.6.2014, 09:27 |
| Еще добавлю, что можете взять готовые сборки и не париться со сборкой своего тулчейна. Там ведь не только компилятор, а еще и GLIBC (или всякие аналоги типа NEWLIB) надо, в общем ИМХО конечно, но гемор еще тот. Я пользовался этим: http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/, бесплатный тулчейн от Mentor Graphics, под CortexM3 и ARM9 все нормально собирает (под другие ARMы то же может, просто я не пробовал), правда некоторые http://osdev.ru/viewtopic.php?f=6&t=433&hilit=GCC утверждают что генерируемый GCC код далек от идеала, но это потенциально холиварная тема. А с MinGW это да, вы несколько не в ту степь пошли, это не для ARM. P.S. Кстати этот тулчейн к Code::Blocks прикручивается, можно юзать. |