В последнее время я решил из любопытства запрыгнуть на миникомпьютерную «подножку». Я купил пару Raspberry Pi и BeagleBoard, так как они были настолько дешевы, что я не смог устоять :), но здесь-то и начинаются мои проблемы. У меня была идея для этих устройств, прежде чем я их купил (консольное приложение). Я настроил их на своем маршрутизаторе, чтобы они могли быть доступны «установленному» raspbian для RPi и консоли Ubuntu для BeagleBoard и установлены, и вот здесь начинается моя головная боль.
Я установил Ubuntu 13.04 на свой ноутбук (dualboot), чтобы у меня был доступ к компилятору ARM. Теперь, прежде чем я продолжу дальше, я должен сказать вам, что я разрабатываю в основном в среде Windows, но я знаком с Linux из-за своего опыта работы сисадмина. В любом случае, поскольку у меня не так много свободного времени после работы, так как я люблю встречаться с друзьями и семьей, мне нравится иметь возможность изменять исходный код и выполнять кросс-компиляцию под Windows (Visual Studio Ultimate 2012) на работе, когда я чувствую себя свободно или мне нужно расслабиться под Ubuntu на моем ноутбуке, когда я действительно найду время и хочу иметь простую процедуру компиляции для ARM на моем ноутбуке и отправить двоичные файлы в RPi и BeagleBoard (даже если вручную) как а также компилирование для x86 в Windows и Linux, чтобы я мог все-таки отлаживать свой код.
Я прочитал о том, как это делают другие люди, и я использовал Eclipse CDT в качестве компилятора Linux IDE + (g ++ / gdb) и Visual Studio под Windows. Сделал свою собственную структуру каталогов, но я нахожу требование Makefile ОЧЕНЬ утомительным. Мне потребовались дни, чтобы заняться этим, и я все еще не удовлетворен этим, привык к простой F5 под окнами, чтобы получить Build + Run Debug, все это хорошо структурировано так, как я этого хочу.
Как бы то ни было, сначала все шло хорошо, следуя «стандарту» C ++ 11 и добавляя для него соответствующие флаги под linux, а затем начали появляться некоторые странные ошибки, я даже не мог скомпилировать SQLite, пока эта штука отлично работала под Windows / Visual Studio. После нескольких дней проб и ошибок я сдался и пришел сюда, прося совета
Как вы, ребята, поклонники RPi / BeagleBoard работаете с этими компьютерами, как вы настраиваете мульти-ОС / мульти-Arch среду для отладки и компиляции? Я нахожу это чрезвычайно трудным с точки зрения того, что я рассматриваю использование Java только для того, чтобы я мог реализовать свою идею:< , Один из способов — это иметь все библиотеки и компиляторы на самом устройстве и носить его с собой, что тоже не проблема, но оно выглядит немного средневековым, и, в конце концов, все мои SD-карты имеют довольно ограниченный размер, на них установлена ОС. ,
Любые советы, ссылки на руководства, книги приветствуются. Хотя английский не является языком моей матери, я не против читать в нем книги / статьи.
Заранее спасибо!
П.С .: Я ношу проект с большим пальцем.
Во-первых, я бы не поспорил на возможность кросс-компиляции для linux-arm
или же linux-x86
цели с хоста Windows, так что остальные мои советы предназначены только для вашего Ubuntu box.
Что касается Ubuntu для ARM на вашей BeagleBoard, если он использует один из Debian armel/armhf
архитектуры, то вы можете просто установить emdebian
кросс-цепочка вместе с xapt
, Есть множество коротких и простых уроков, выберите тот, который вы хотите.
Теперь проблема с Raspbian заключается в том, что он не использует обычные armel/armhf
архитектуры от Debian, но где-то посередине (хард-плавающий ARMv6, в то время как armel
для мягкого поплавка ARMv5 и armhf
это для поплавка ARMv7). Таким образом, вы не можете использовать стандарт emdebian
кросс-цепочки вместе с xapt
кросс-компилировать для Raspbian.
Существует официальный Raspbian кросс-инструментарий, вы можете прочитайте этот учебник (но имхо вы должны забыть об Eclipse, это излишне, любой текстовый редактор вроде kate
или же gedit
будет гораздо менее запутанным для небольших проектов).
Я считаю требование Makefile ОЧЕНЬ утомительным
Ты можешь использовать Autotools генерировать configure
, Makefile
и т. д., это будет намного проще, чем писать голые Makefile
самостоятельно. См. Например этот урок.
есть двоичные файлы, отправленные на RPi и BeagleBoard
Два слова: SSH / SCP. И да, вы можете легко написать это и сделать его частью вашего процесса сборки.
И последнее, но не менее важное: я имею в виду не обижаться (я тоже прошел через это;)), но так как вы — разработчик для Windows, у которого мало или совсем нет опыта разработки под Linux, мой лучший совет — отказаться от всей кросс-компиляции. на данный момент, пока вы действительно не привыкли к разработке Linux. Поначалу разработка Linux сбивает с толку, кросс-компиляция также поначалу сбивает с толку, не нужно обрабатывать оба одновременно.
Легче всего сделать так, чтобы ваша цепочка инструментов и код находились в целевом окне (RPi / Beagle), смонтировали исходный каталог через SSHFS / что угодно, чтобы вы могли удобно редактировать его со своего основного компьютера, и скомпилировали в сеансе SSH. Вам даже не нужно иметь физически доступный целевой ящик, если вы можете достичь его через сеть / Интернет (при условии, что он правильно защищен).
Удачи!
Ваш процесс сборки очень сложен, поэтому не ждите простых решений. Вы пытаетесь использовать несколько операционных систем и компиляторов и целевых архитектур. CMake был создан, чтобы помочь с такими вещами, но это не простое решение. Я не думаю, что есть один.