Компиляция в asm.js в Rust



1. Добавим в Rust возможность кроскомпиляции в asm.js. В консоли дадим команду rustup target add asmjs-unknown-emscripten Теперь необходимо установить сам emscripten.

2. Со странички http://kripken.github.io/emscripten-site/docs/getting_started/downloads.html#download-and-install загрузим и установим Emscripten SDK Offline Installer (emsdk-1.35.0-full-64bit.exe)

3. В консоли дадим такие команды:
    emsdk update
    emsdk install latest
    emsdk activate latest

4. Но emsdk 1.35 неверно работает под Windows, процесс заканчивается с ошибкой “Failed to run llvm optimizations” Будем устанавливать emsdk 1.37.2 с вихідних кодів. Кава і бутерброди нам допоможуть, це процес більше чим на годину)) Кроме компилятора visual studio, у меня Visual Studio 2013, нам необходим будет ещё и cmake https://cmake.org/download . Я установил https://cmake.org/files/v3.8/cmake-3.8.0-rc1-win64-x64.msi

5. В консоли
    emsdk update
    emsdk install sdk-incoming-64bit
и можно пить кофе))

6. В консоли
    emsdk activate sdk-incoming-64bit

7. Проверяем переменную окружения path и , если необходимо, исправляем …/emscripten/1.35.0... на …/emscripten/incoming... и ,господи,мы его установили))

8. Но радоваться ещё рано)) Создадим новый проект с
fn main() {
    println!("Hello Rust!");
}
и скомпилируем его в Idea, чтобы появилась возможность исправлять конфигурацию. Добавляем в конфигурацию в поле Соммаnd build , а в поле addishional arguments --target asmjs-unknown-emscripten. Пробуем скомпилировать и получаем длиннющее сообщение про ошибку)) Rust не может найти компоновщика. Это emcc.bat который запускает emcc, который является скриптом на python)). И то что он запускается с консоли (есть в path), ешё ничего не значит.

9. Идём в С:\Users\Имя пользователя\.cargo и создаем файл config с таким содержанием:
    [target.asmjs-unknown-emscripten]
    linker = "C:/Emscripten/emscripten/incoming/emcc.bat"
Путь может быть другим,конечно))

10. Теперь мы можем скомпилировать наш файл и получить файл js. Правда он пишет Hello Rust! в консоли браузера))

Как разрабатывать приложения с GUI, да еще такие ,которые будут работать в браузере и на рабочем столе читайте в следующей статье.

Комментарии

Популярные сообщения из этого блога

Работа с глобальными переменными в Rust

IUP - библиотека элементов GUI

Виртуальный GUI на Rust