![]() |
|
![]() ![]() ![]() |
|
Курсант |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 338 Регистрация: 21.2.2009 Где: Балашиха или Воро неж Репутация: нет Всего: 4 |
Здравствуйте!
Пытаюсь разобраться с компиляторами для ARM из коллекции GCC. А именно, не могу понять, для чего мне нужен MinGW (minimalistic gnu for windows). Насколько я понял, MinGW это какой-то набор утилит, имеющий довольно опосредованное отношение к самой компилляции, и я не могу понять, зачем мне эта красота на винде нужна? Если я правильно понимаю, компилятор, линковщик и другие нужные мне штуки - это в любом случае утилиты, скомпилированные под Windows. Скачанный MinGW отпугнул меня какими-то непонятными пунктами в опциях, необходимостью что-то "собирать аналогично сборке в Linux" и прочими совершенно излишними танцами с бубном. Скажите, можно ли тупо скачать нужные мне утилиты (компилятор, линковщик, make-файл и что там ещё бывает, я не знаю) архивом, распаковать их в поддиректорию Code Blocks, прописать пути к ним в настройках IDE и пользоваться? Когда-то давно с GCC для Windows у меня такое прокатило (использовал компилятор в своей программе для перекомпиляции dll во время работы программы), а вот с ARM не въеду, да и забыл всё... Спасибо за внимание, сильно не бейте если что ![]() |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 4 Всего: 196 |
Курсант, причем тут 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. |
|||
|
||||
Курсант |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 338 Регистрация: 21.2.2009 Где: Балашиха или Воро неж Репутация: нет Всего: 4 |
Дело в том, что я пытался установить GCC for ARM по одной статье, а в статье как раз было описано, как собрать GCC for ARM с помощью MinGW. Собственно, в этом и заключался вопрос, зачем мне MinGW. Я уже скачал какой-то GNU tools for AVR, на MSYS пока решил забить, для начала позапускаю компилятор, линковщик и др. утилиты вручную, через cmd.exe, чтобы лучше разобраться в происходящем ![]() З.Ы. Если честно, вместо make.exe из состава MSYS я решил со временем свой make.exe написать... ИМХО, мне проще на C++ написать сканирование директории на предмет исходников с компиляцией и линковкой (т.е. с вызовами утилит из GCC for ARM) всего и вся, что попадётся под руку, нежели разбираться с устройством makefile-ов. Конечно, автоматизация компиляции с помощью make.exe - отличная идея, но меня бесит реализация... ИМХО, делать под винду порт линуксовых (или каких там) утилит для того, чтобы работал make.exe - это как-то неоптимально... Костыли какие-то... Пока не поздно - отговорите меня пожалуйста ![]() Это сообщение отредактировал(а) Курсант - 5.6.2014, 12:34 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 4 Всего: 196 |
AVR - это несколько другая архитектура. Я тебе же кинул ссылку, где можно загрузить готовый toolchain для ARM.
Ты можешь установить Visual Studio и научиться пользоваться nmake. Но mingw значительно меньше. А потом, для работы make не нужны все утилиты. Он работает хорошо и без них. Просто многие проги позволяют писать сложные обработчики файлов без программирования на С/С++. Если тебе не нужна какая-либо обработка, то проблем не будет с голым make. Поищи makefile от winavr, там немного доработать и будет собирать под ARM. |
|||
|
||||
Курсант |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 338 Регистрация: 21.2.2009 Где: Балашиха или Воро неж Репутация: нет Всего: 4 |
Спасибо
![]() ![]() ![]() |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 4 Всего: 196 |
возможно, у тебя оптимизация отключена (для контроллеров нужно использовать -Os), включен не тот набор инструкций (-marm вместо -mthumb), создается отладочная информация (добавь -g0), линкуются лишние библиотеки.
|
|||
|
||||
Курсант |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 338 Регистрация: 21.2.2009 Где: Балашиха или Воро неж Репутация: нет Всего: 4 |
Спасибо, отладочную информацию убрал, для elf-файла получилось 104 кб, для bin - 45 кб
![]() |
|||
|
||||
LeonidPr |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Еще добавлю, что можете взять готовые сборки и не париться со сборкой своего тулчейна. Там ведь не только компилятор, а еще и GLIBC (или всякие аналоги типа NEWLIB) надо, в общем ИМХО конечно, но гемор еще тот.
Я пользовался этим: Sourcery CodeBench Lite, бесплатный тулчейн от Mentor Graphics, под CortexM3 и ARM9 все нормально собирает (под другие ARMы то же может, просто я не пробовал), правда некоторые товарищи утверждают что генерируемый GCC код далек от идеала, но это потенциально холиварная тема. А с MinGW это да, вы несколько не в ту степь пошли, это не для ARM. P.S. Кстати этот тулчейн к Code::Blocks прикручивается, можно юзать. --------------------
pkunzip.zip |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | GNU toolchain | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |