англійськафранцузькаіспанська

Ad


Значок OnWorks

emcc - Інтернет у хмарі

Запустіть emcc у безкоштовному хостинг-провайдері OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда emcc, яку можна запустити у безкоштовного хостинг-провайдера OnWorks за допомогою однієї з наших безкоштовних онлайн-робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

ПРОГРАМА:

ІМ'Я


emcc – інтерфейс компілятора Emscripten

ОПИС


файл emcc [параметри]...

міст нормальний gcc/g++ опції волі робота, та цінності приклад:
--допомога Відобразити цю інформацію

-- версія
Відображення інформації про версію компілятора

Опції Що він має модифікований or new in emcc включати:
-О0 Без оптимізації (за замовчуванням)

-О1 Прості оптимізації, включаючи asm.js, LLVM -О1 оптимізації та відсутності часу виконання
твердження або перехоплення винятків C++ (щоб повторно ввімкнути перехоплення винятків C++, використовуйте -s
DISABLE_EXCEPTION_CATCHING=0 ). (Для отримання докладної інформації про вплив різних опцій
див. apply_opt_level() у tools/shared.py, а також src/settings.js.) Примітка:
Оптимізація виконується лише під час компіляції до JavaScript, а не до проміжного рівня
бітовий код, *якщо* ви не створюєте з EMCC_OPTIMIZE_NORMALLY=1 (не рекомендується, якщо
ти знаєш що робиш!)

-О2 As -О1, плюс relooper (відтворення циклу), LLVM -О2 оптимізації та

-s ALIASING_FUNCTION_POINTERS=1

-О3 As -О2, а також небезпечні оптимізації, які можуть зламати згенерований код! Це додає

-s FORCE_ALIGNED_MEMORY=1 -s DOUBLE_MODE=0 -s PRECISE_I64_MATH=0 --закриття 1
--llvm-lto 1

Це взагалі не рекомендується. Краще спробувати кожен із них окремо
верхній частині -О2 щоб побачити, що працює. Перегляньте wiki та src/settings.js (для -s options)
для отримання додаткової інформації.

-s OPTION=ЗНАЧЕННЯ
Опція генерації коду JavaScript передана компілятору emscripten. Для
доступні параметри див. src/settings.js Зауважте, що для параметрів, які є списками, ви
потрібні лапки в більшості оболонок, наприклад

-s RUNTIME_LINKED_LIBS="['liblib.so']"

or

-s "RUNTIME_LINKED_LIBS=['liblib.so']"

(без зовнішнього "s у будь-якому з них ви отримаєте помилку)

Ви також можете вказати файл, з якого буде читатися значення, наприклад,

-s DEAD_FUNCTIONS=@/шлях/до/файлу

Вміст /шлях/до/файлу буде прочитано, JSON.parsed і встановлено в DEAD_FUNCTIONS
(тобто файл міг містити

["_func1", "func2"]

). Зауважте, що шлях має бути абсолютним, а не відносним.

-g Використовуйте інформацію про налагодження. Зауважте, що вам знадобиться це під час останньої фази компіляції з
біт-код у JavaScript, інакше ми видалимо його за замовчуванням у -О1 і вище. в
-О0, у згенерованому коді буде показано номери рядків. в -О1 і вище, the
оптимізатор видаляє ці коментарі. Однак цей прапор має ефект
вимкнення всього, що спричиняє спотворення або скорочення імен (закриття або
зареєструвати пропуск).

--typed-arrays
0: Без типізованих масивів 1: Паралельно типізовані масиви 2: Спільні (C-подібні) типізовані масиви
(За замовчуванням)

--llvm-opts
0: немає оптимізації LLVM (за замовчуванням у -О0) 1: -О1 Оптимізація LLVM (за замовчуванням у
-О1) 2: -О2 Оптимізація LLVM 3: -О3 Оптимізація LLVM (за замовчуванням у -О2+)

--llvm-lto
0: немає LLVM LTO (за замовчуванням у -О2 і нижче) 1: LLVM LTO (за замовчуванням у -О3) Примітка: якщо
Оптимізація LLVM не виконується (див --llvm-opts), встановлення значення 1 не має ефекту.

--закриття
0: немає компілятора закриття (за замовчуванням у -О2 і нижче) 1: Запустіть компілятор закриття. Це
значно зменшує розмір коду та може в деяких випадках збільшити швидкість виконання (хоча
може статися і навпаки). Зауважте, що для запуску потрібен час і може знадобитися деякий час
зміни коду. Це запускається за замовчуванням у -О3.

У режимі asm.js закриття використовуватиметься лише для коду оболонки навколо скомпільованого
код (скомпільований код буде оброблено спеціальним мініфікатором asm.js).

Примітка. Якщо компілятор закриття стикається з браком пам’яті, спробуйте налаштувати JAVA_HEAP_SIZE у
середовища (наприклад, до 4096m для 4GB).

--js-перетворення
буде викликано для згенерованого коду перед його оптимізацією. Це дозволяє вам
певним чином змінити JavaScript, наприклад, додавши код або видаливши його
що ці зміни будуть оптимізовані разом із згенерованим кодом
належним чином. буде викликано з іменем файлу згенерованого коду як a
параметр; щоб змінити код, ви можете прочитати вихідні дані, а потім додати до них
або перезаписати його зміненими даними. трактується як розділене пробілом
список аргументів, наприклад, "python processor.py" викличе python
сценарій для запуску.

--pre-js
Файл, вміст якого додається перед згенерованим кодом. Це зроблено *раніше*
оптимізації, тому його буде зменшено належним чином, якщо запустити компілятор закриття.

--post-js
Файл, вміст якого додається після згенерованого коду. Це робиться *до*
оптимізації, тому його буде зменшено належним чином, якщо запустити компілятор закриття.

--вбудований файл
Файл для вбудовування в створений JavaScript. Зкомпільований код зможе
отримати доступ до файлу в поточному каталозі з такою самою назвою, як наведено тут. Отже, якщо
ви робите --вбудований файл dir/file.dat, тоді (1) dir/file.dat має існувати відносно
де ви запускаєте emcc, і (2) ваш скомпільований код зможе знайти файл за
читання того самого шляху, dir/file.dat. Якщо сюди передається каталог, його весь
вміст буде вбудовано.

--preload-файл
Файл для попереднього завантаження перед асинхронним запуском скомпільованого коду. Інакше
схожий на --вбудований файл, за винятком того, що цей параметр актуальний лише під час генерації
HTML (він використовує асинхронні двійкові XHR) або JS, який використовуватиметься на веб-сторінці. Якщо
сюди передається каталог, весь його вміст буде попередньо завантажено. Попередньо завантажені файли
зберігаються у filename.data, де filename.html є основним файлом, який ви збираєте
до. Щоб запустити код, вам знадобляться як .html, так і .data.

emcc запускає tools/file_packager.py для фактичного пакування вбудованих і
попередньо завантажені файли. Ви можете запустити пакувальник файлів самостійно, якщо хочете, дивіться документи
всередині цього файлу. Потім вам слід помістити результат пакувальника файлів у emcc
--pre-js, так що він виконується перед основним скомпільованим кодом (або запускає його перед in
іншим способом).

-- стиснення
Стискайте як скомпільований код, так і вбудовані/попередньо завантажені файли. має бути a
потрійний,

, ,

де native_encoder — це рідний виконуваний файл, який стискає stdin до stdout (
найпростіший можливий інтерфейс), js_decoder — це файл JavaScript, який реалізує a
decoder, а js_name — ім’я функції, яку потрібно викликати у файлі декодера (який
має отримати масив/введений масив і повернути масив/введений масив. Компресія
працює лише під час генерації HTML. Коли стиснення ввімкнено, усі вказані файли
попередньо завантажені стискаються в один великий архів, якому дається така ж назва, що й файл
вихід HTML, але з суфіксом .data.compress

--зменшити
0: не зменшувати згенерований пробіл JavaScript (за замовчуванням у -О0, -О1або якщо
-g використовується)

1: Зменште згенерований JavaScript

пробіл (за замовчуванням у -О2+, якщо припустити -g не використовується)

--розкол
Розділяє отриманий файл javascript на частини, щоб полегшити налагодження. Цей варіант
працює, лише якщо згенеровано Javascript (target -o .js). Файли з функціями
декларації повинні бути завантажені перед головним файлом після виконання.

Без опції "-g":

Створює файли з оголошеннями функцій до заданого розміру з суфіксом
"_functions.partxxx.js" і основний файл із суфіксом ".js".

З опцією "-g":

Відтворює структуру каталогів вихідних файлів C і зберігає функцію
декларації у відповідних файлах C із суфіксом ".js". Якщо такий файл
перевищує вказаний розмір, створюються файли з суфіксом ".partxxx.js". Головний
файл знаходиться в базовому каталозі та має суфікс ".js".

-- зв'язати Компілює вихідний код за допомогою підходу зв’язування «embind», який поєднує C/C++
і JS.

--ignore-dynamic-linking Зазвичай emcc розглядатиме динамічне зв’язування як
статичне зв’язування шляхом зв’язування коду з динамічної бібліотеки. Це не вдається, якщо
та сама динамічна бібліотека пов’язується більше одного разу. З цією опцією динамічне зв'язування
ігнорується, що дозволяє системі збирання продовжувати роботу без помилок. Однак ти
пізніше вам доведеться вручну підключитися до спільних бібліотек.

--shell-файл
Ім’я шляху до скелетного файлу HTML, який використовується під час генерування вихідних даних HTML. Оболонка
використовуваний файл повинен містити цей маркер: {{{ SCRIPT_CODE }}} Зауважте, що це
аргумент ігнорується, якщо ціль, відмінна від HTML, указана за допомогою -o варіант.

--js-бібліотека
Бібліотека JavaScript для використання на додаток до бібліотеки src/library_* Emscripten

-v Вмикає докладний вивід. Це пройде -v до Clang, а також увімкніть EMCC_DEBUG для
детально описує операції emcc

--jcache
Використовуйте кеш JavaScript. За замовчуванням це вимкнено. Якщо ввімкнено, emcc зберігатиме
результати компіляції в кеші та перевіряйте кеш під час компіляції пізніше,
щось на зразок того, що робить ccache. Це дозволяє поетапні збірки - там, де ви є
компілює велику програму, але змінює лише невелику її частину - щоб бути набагато швидшим
(ціною більшого дискового введення-виведення для доступу до кешу). Зверніть увагу, що вам потрібно ввімкнути
--jcache як для завантаження, так і для збереження даних, тому ви повинні ввімкнути його на повній збірці
для прискорення подальшої поетапної збірки (де ви також її вмикаєте).

Кешування працює окремо на 4 частинах компіляції: «pre», яка є типами, і глобальна
змінні; ця інформація потім подається в 'funcs', які є функціями (які
ми розпаралелюємо), а потім 'опублікувати', який додає остаточну інформацію на основі
функції (наприклад, чи потрібен нам код підтримки long64). Нарешті, 'jsfuncs' є
Оптимізація на рівні JavaScript. Кожну з 4 частин можна кешувати окремо, але
зауважте, що вони можуть впливати один на одного: якщо ви перекомпілюєте один файл C++, який
змінює глобальну змінну - наприклад, додає, видаляє або змінює глобальну змінну, скажімо
додавши printf або додавши мітку часу компіляції, тоді 'pre' не може бути
завантажується з кешу. А оскільки вивід 'pre' надсилається до 'func' і 'post', вони
також стане недійсним, і лише 'jsfunc' буде кешовано. Тому уникайте модифікації
глобальні параметри, щоб забезпечити повну роботу кешування.

Щоб вирішити проблему, згадану в попередньому абзаці, ви можете використовувати

emscripten_jcache_printf

під час додавання debug printfs до вашого коду. Ця функція спеціально попередньо оброблена таким чином
що він не створює постійний глобальний рядок для свого першого аргументу. Побачити
emscripten.h для отримання додаткової інформації. Зверніть увагу, зокрема, що вам уже потрібно мати a
виклик цієї функції у вашому коді *перед* додаванням і виконанням інкрементного
build, так що додавання зовнішнього посилання (також глобальної властивості) ні
анулювати все.

Зверніть увагу, що ви повинні використовувати -g на етапі зв’язування (бітовий код із JS), для jcache
працювати (інакше мініміфікація JS може заплутати його).

--очистити кеш
Вручну очищає кеш скомпільованих системних бібліотек emscripten (libc++,
libc++abi, libc). Зазвичай це обробляється автоматично, але якщо ви оновите llvm
на місці (замість іншого каталогу для нової версії), кешування
механізм може заплутатися. Очищення кешу може вирішити дивні проблеми, пов’язані з
несумісність кешу, наприклад clang, що не вдається зв’язатися з файлами бібліотеки. Це також
очищає інші кешовані дані, такі як jcache і завантажувальний relooper. Після
кеш очищено, цей процес завершиться.

--save-bc PATH
Під час компіляції в JavaScript або HTML ця опція збереже копію біт-коду
на вказаний шлях. Бітовий код включатиме всі пов’язані файли, включно з
стандартні бібліотеки та після будь-якої оптимізації часу підключення (якщо така є).

--memory-init-file
Якщо ввімкнено, ми створюємо окремий файл ініціалізації пам’яті. Це ефективніше
ніж зберігання даних ініціалізації пам’яті, вбудованих у JavaScript, у вигляді тексту.
(за умовчанням вимкнено)

Цільовий файл, якщо вказано (-o ), визначає, що буде згенеровано:

.js
JavaScript

.html
HTML із вбудованим JavaScript

.bc
Бітовий код LLVM (за замовчуванням)

.o
Бітовий код LLVM (те саме, що .bc)

(Зверніть увагу, якщо --memory-init-file використовується, то на додаток до файлу .js або .html
також з’явиться файл .mem.)

Команда -c параметр (який вказує gcc не запускати компонувальник) спричинить біт-код LLVM
генерується, оскільки emcc генерує лише JavaScript на останньому етапі створення зв’язку.

Вхідним(ими) файлом(ами) можуть бути або файли вихідного коду, які може обробляти Clang (C або C++), або LLVM
бітовий код у двійковій формі або файли складання LLVM у зрозумілій людині формі.

На emcc впливає кілька змінних середовища. Щоб дізнатися більше, перегляньте джерело emcc
(пошук "os.environ").

emcc: підтримувані цілі: біткод llvm, javascript, НЕ elf (autoconf любить бачити elf
вище, щоб увімкнути підтримку спільних об’єктів)

АВТОРСЬКЕ


Авторське право © 2013 автори Emscripten (див. AUTHORS.txt) Це безкоштовно та з відкритим кодом
програмне забезпечення за ліцензією MIT. Гарантії НЕМАЄ; навіть не для ПРОДАЖНОСТІ чи
ПРИГОДНІСТЬ ДЛЯ ОСОБЛИВОЇ МЕТИ.

Використовуйте emcc онлайн за допомогою сервісів onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

Команди Linux

Ad