Как правильно писать программы под linux?

Я embedded-программист и привык к тому, что папка с проектом содержит все необходимые для компиляции файлы. Другой программист взял твою папку с проектом и у него тоже все компилируется. Я довольно смутно понимаю, как правильно использовать общие библиотеки (будь то dll или so).

Некоторое время назад у нас возникла необходимость писать небольшие программки под линукс для одноплатных компьютеров (причем как для ARM так и для x86), и мы попытались это свойство сохранить (у нас не получилось).

Учитывая, что все мои коллеги и я сидим под Windows, мы пошли следующим путем:
- Нашли кросс-gcc (для ARM и для x86).
- Настроили эклипс и подняли удаленную отладку на одноплатниках через ssh.

В принципе, это решение работает, бинарник-то получается. Но есть несколько проблем:
- Путь к компилятору жестко прописан в настройках проекта
- Все библиотеки, которых нет в поставке с компилятором, приходится компилировать на одноплатнике, тащить в Windows и потом вручную прилинковывать. По одной. Пути при этом тоже жестко прописаны.
- Ресурсы прилинковать можно только через objcopy.

У меня есть сильное подозрение, что вышеописанный способ является извращенным набором костылей. Но я, к сожалению, не нашел способа получше.
- Можно вести разработку прямо на одноплатнике, но к некоторым нельзя подключить монитор, а я развращен графическими IDE и к vim/emacs морально не готов.
- Можно бы поставить на рабочий комп линукс (или виртуалку с линуксом), но компиляция под ARM все равно потребует кросс-компилятора и библиотек, скомпилированных под ARM.

Собственно, вопрос: как это делают нормальные люди?
  • Вопрос задан
  • 919 просмотров
Пригласить эксперта
Ответы на вопрос 3
sim3x
@sim3x
askubuntu.com/questions/250696/cross-compile-for-arm
www.acmesystems.it/arm9_toolchain

Билд машина нужна в случае, когда софт собирается по несколько часов, но и конфиг у нее должен быть помощнее чем у рабочих станций

У каждого дистрибутива есть свой набор либ, которые сразу есть в поставке или их можно поставить пакетным менеджером

У линукса есть своя иерархия директорий, что где лежит и что куда стоит ложить

Те большая часть доступного в линуксе софта, можно получить или прямо из $PATH или из строго определенных директорий

IDEA поддерживает vagrant, возможно твоя ИДЕ также - так что тебе не придется много писать через ssh
Ответ написан
@syrov
пишу программы до 99 строк
Присоединясь к cmake. Идея "все необходимое в одной папке" интересна, но она не масштабируется. не масштабируется до больших проэктов со многими компонентами и их собственными зависимостями. Для этого собственно и созданы менеджеры таких проэктов. Windows ориентирован на идеологию ...Windows, с вращением вокруг MS Windows SDK, если надо другое, сам сам сам (есть начинания типа nuget, но это не интегральное решение, а патч). Gcc из другой (эко)системы. Я устанавлижаю пакет (pacman -S gcc ...) и все пакеты (магически) сами находятся, и мне не надо думать, где что, на другом комке я установлю теже пакеты и все. Никаких жестких путей. Это личное мнение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы