Кроме языка/платформы
Go, так же неплохо с кросс-компиляцией обстоит дело и с языком/платформой
Rust.
Rust -- не такой попсовый и популярный, как Go, но он более "мощный", c использованием
Markdown для комментариев в коде, с лучшей продуманной системой сборки и пакетным менеджером
Cargo.
За большую функциональность приходится платить большей сложностью языка, одни только макросы на основе AST (
Абстрактное синтаксическое дерево) чего стоят...
Для Windows, кратко инструкция по установке выглядит следующим образом.
1. Что бы проекты собирались для Windows, необходимо проинсталлировать средства сборки C/C++, установить "Build Tools for Visual Studio 2017" со страницы
https://www.visualstudio.com/downloa...al-studio-2017, при этом отметить инструменты C++ при установке.
2. Что бы проекты собирались для ARMv7, необходимо проинсталлировать средства сборки C/C++, установить gcc-linaro-7.2.1-2017.11-i686-mingw32_arm-linux-gnueabihf.tar.xz со страницы
https://releases.linaro.org/componen...nux-gnueabihf/
3. Загружаем дистрибутив Rust:
https://www.rust-lang.org/ru-RU/install.html и устанавливаем его.
4. Устанавливаем библиотеки исполнения для ARMv7 со статической линковкой, выполняем команду:
Код:
rustup target install armv7-unknown-linux-musleabihf
5. Создаем файл конфигурации сборщика, файл
%USERPROFILE%\.cargo\config с содержимым:
Код:
[target.armv7-unknown-linux-musleabihf]
linker = "....../bin/arm-linux-gnueabihf-gcc.exe"
где .... заменяем на каталог, в который установили gcc-linaro в пункте 2.
6. Создаем шаблон проекта "hello" командой:
Код:
cargo new hello --bin
7. Собираем версию под Windows командой:
Результат будет в файле
target/debug/hello.exe, размер ~140 Кб, слинкован с VCRUNTIMExxx.dll.
8. Собираем версию под ARM командой:
Код:
cargo build --target=armv7-unknown-linux-musleabihf
Результат будет в файле
target/armv7-unknown-linux-musleabihf/debug/hello (размер ~1.9 Мб), время сборки ~1 сек.