Здравствуйте, alpha21264, Вы писали:
A>1) Она не работает. Ты конечно можешь её заставить (иногда),
A> но она будет всё время отваливаться по самым идиотским причинам и в произвольные моменты времени.
Возможно, я что-то делаю не так, но у меня она работает всегда и не отваливается. Возможно, я что-то делаю не так — например, делаю ее под виндой.
A>2) Она обязательно соберёт не то. Не под ту архитектуру, не под ту версию.
Ни разу такого не было. Очевидно, виновата винда.
A>3) Будешь трахаться с библиотеками и их версиями.
С ними приходится трахаться почти всегда, когда они используются, независимо от платформ.
A>На Raspberry у тебя всегда будет одно, на PC другое.
Это опять же из-за кривой идеологии *nix ("в каждой системе обязана быть среда для сборки"), от которой польза только для типовых вариантов, а для нетиповых — сплошной вред. В виндовых средствах сборки
принципиально нет понятия "родной среды" — все необходимые средства всегда устанавливаются независимо, в той конфигурации, которая необходима. Конечно, бывают проекты с инструкциями вроде "собирать только под VS 2015.3", но и это всего лишь означает набор
известных заголовочных/библиотечных файлов, не более того.
Если мне вдруг приспичит поднять на винде под Raspberry среду для сборки, под нею соберутся правильные бинарники с той же функциональностью, что и под виндой на x64 — хоть для arm64, хоть для x64, хоть для x86. Даже представить себе не могу, что там нужно сделать, чтобы оно вдруг не собралось, или собралось неправильно. Различия могут быть лишь в чисто технических мелочах вроде порядка секций, для которых тот порядок не задан явно — если версии компилятора/линкера будут разными. Одинаковые версии соберут полностью идентичные бинарники и там, и там.
A>Современной программе всегда нужно не менее 100 разных библиотек.
Всегда? Не менее? Точно?
A>4) Что-то нужно мудрить с инсталлятором. make install как правило не прокатывает.
Если скрипты для установки написаны под конкретную версию/конфигурацию системы, то это предсказуемо. Если заявлено, что они могут обслуживать множество систем, но не делают этого — они просто кривые. Но только при чем здесь кросс-компиляция,
как таковая? Так и говорите — "скрипты, написанные для халявной сборки под целевой системой, ломаются при изменении конфигурации".
A>5) Оно может конфликтовать с твоей основной средой разработки.
Каким образом? Конечно, если в лучших линуксовых традициях сваливать все заголовки/библиотеки в одну "системную" кучу, в которой они видны глобально и находятся по общим путям, то неудивительно. И сама кросс-компиляция здесь снова ни при чем.