АнглийскийФранцузскийИспанский

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 эмкк следующие:
-O0 Без оптимизации (по умолчанию)

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

-O2 As -O1, плюс relooper (восстановление цикла), LLVM -O2 оптимизации и

-s ALIASING_FUNCTION_POINTERS = 1

-O3 As -O2, плюс опасные оптимизации, которые могут нарушить сгенерированный код! Это добавляет

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

Это совсем не рекомендуется. Лучше попробовать каждый из них отдельно на
начало -O2 чтобы увидеть, что работает. См. Wiki и src / settings.js (для -s опции)
чтобы получить больше информации.

-s ВАРИАНТ = ЗНАЧЕНИЕ
Параметр генерации кода JavaScript передан в компилятор emscripten. Для
доступные параметры см. в src / settings.js. Обратите внимание, что для параметров, которые являются списками, вы
нужны кавычки в большинстве оболочек, например

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

or

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

(без внешних символов в любом из них вы получите сообщение об ошибке)

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

-s DEAD_FUNCTIONS = @ / путь / к / файлу

Содержание / путь / к / файлу будет прочитан, JSON.parsed и установлен в DEAD_FUNCTIONS
(так что файл может содержать

["_func1", "func2"]

). Обратите внимание, что путь должен быть абсолютным, а не относительным.

-g Используйте отладочную информацию. Обратите внимание, что вам это нужно на последнем этапе компиляции из
битовый код в JavaScript, иначе мы удалим его по умолчанию в -O1 и выше. В
-O0, номера строк будут показаны в сгенерированном коде. В -O1 и выше,
оптимизатор удаляет эти комментарии. Однако этот флаг имеет эффект
отключение всего, что вызывает искажение имени или минификацию (закрытие или
зарегистрировать пропуск).

--typed-массивы
0: Нет типизированных массивов 1: Параллельно типизированные массивы 2: Общие (C-подобные) типизированные массивы
(По умолчанию)

--llvm-opts
0: без оптимизации LLVM (по умолчанию в -O0) 1: -O1 Оптимизация LLVM (по умолчанию в
-O1) 2: -O2 Оптимизация LLVM 3: -O3 Оптимизация LLVM (по умолчанию в -O2+)

--llvm-lto
0: нет LLVM LTO (по умолчанию в -O2 и ниже) 1: LLVM LTO (по умолчанию в -O3) Примечание: если
Оптимизация LLVM не выполняется (см. --llvm-opts), установка значения 1 не имеет никакого эффекта.

- закрытие
0: Без компилятора закрытия (по умолчанию в -O2 и ниже) 1: Запустить компилятор закрытия. Этот
значительно уменьшает размер кода и может в некоторых случаях увеличить скорость выполнения (хотя
может произойти и обратное). Обратите внимание, что для запуска требуется время и может потребоваться
изменения в коде. По умолчанию это запускается в -O3.

В режиме asm.js закрытие будет использоваться только для кода оболочки вокруг скомпилированного
code (скомпилированный код будет обработан кастомным минификатором asm.js).

Примечание. Если компилятор закрытия обнаруживает нехватку памяти, попробуйте настроить JAVA_HEAP_SIZE в
окружение (например, до 4096м для 4ГБ).

--js-преобразование
будет вызываться для сгенерированного кода перед его оптимизацией. Это позволяет вам
изменить JavaScript, например, добавив некоторый код или удалив некоторый код, способом
что эти модификации будут оптимизированы вместе с сгенерированным кодом
должным образом. будет вызываться с именем файла сгенерированного кода как
параметр; чтобы изменить код, вы можете прочитать исходные данные, а затем добавить к ним
или перезаписать его измененными данными. интерпретируется как разделенный пробелами
список аргументов, например, "python processor.py" вызовет python
сценарий для запуска.

--pre-js
Файл, содержимое которого добавляется перед сгенерированным кодом. Это сделано * до *
оптимизация, поэтому он будет правильно минимизирован при запуске компилятора закрытия.

--post-js
Файл, содержимое которого добавляется после сгенерированного кода. Это делается * до *
оптимизация, поэтому он будет правильно минимизирован при запуске компилятора закрытия.

--embed-файл
Файл для встраивания в сгенерированный JavaScript. Скомпилированный код сможет
доступ к файлу в текущем каталоге с тем же именем, что и здесь. Так что если
вы делаете --embed-файл dir / file.dat, то (1) dir / file.dat должен существовать относительно
где вы запускаете emcc, и (2) ваш скомпилированный код сможет найти файл с помощью
чтение того же пути, dir / file.dat. Если здесь передается каталог, весь его
содержимое будет встроено.

--preload-файл
Файл для предварительной загрузки перед асинхронным запуском скомпилированного кода. Иначе
похож на --embed-файл, за исключением того, что эта опция актуальна только при генерации
HTML (он использует асинхронные двоичные XHR) или JS, который будет использоваться на веб-странице. Если
здесь передается каталог, все его содержимое будет предварительно загружено. Предварительно загруженные файлы
хранятся в filename.data, где filename.html - это главный файл, который вы компилируете.
к. Для запуска вашего кода вам понадобятся как .html, так и .data.

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

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

, ,

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

--минифи
0: не уменьшать сгенерированный пробел JavaScript (по умолчанию в -O0, -O1, или если
-g используется)

1. Уменьшите сгенерированный код JavaScript

пробел (по умолчанию в -O2+, предполагая -g не используется)

--расколоть
Разбивает получившийся файл javascript на части для облегчения отладки. Этот вариант
работает только в том случае, если сгенерирован Javascript (цель -o .js). Файлы с функцией
объявления должны быть загружены перед основным файлом при выполнении.

Без опции "-g":

Создает файлы с объявлениями функций до заданного размера с суффиксом
«_functions.partxxx.js» и основной файл с расширением «.js».

С опцией "-g":

Воссоздает структуру каталогов исходных файлов C и сохраняет функцию
объявления в соответствующих файлах C с суффиксом ".js". Если такой файл
превышает заданный размер, создаются файлы с суффиксом «.partxxx.js». Главный
Файл находится в базовом каталоге и имеет суффикс «.js».

--связывать Компилирует исходный код с использованием подхода "встраивания" привязок, который соединяет C / C ++
и JS.

--игнорировать динамическое связывание Обычно emcc рассматривает динамическое связывание как
статическая компоновка путем компоновки кода из динамической библиотеки. Это не сработает, если
одна и та же динамическая библиотека связана более одного раза. С этой опцией динамическое связывание
игнорируется, что позволяет системе сборки работать без ошибок. Однако вы
позже вам нужно будет вручную установить ссылку на общие библиотеки.

--shell-файл
Имя пути к скелетному файлу HTML, используемому при генерации вывода HTML. Оболочка
в используемом файле должен быть этот токен: {{{SCRIPT_CODE}}} Обратите внимание, что этот
аргумент игнорируется, если цель, отличная от HTML, указана с использованием -o опцию.

--js-библиотека
Библиотека JavaScript для использования в дополнение к библиотекам Emscripten src / library_ *

-v Включает подробный вывод. Это пройдет -v в Clang, а также включите EMCC_DEBUG, чтобы
подробности операций emcc

--jcache
Используйте кеш JavaScript. По умолчанию это отключено. Когда включено, emcc сохранит
результаты компиляции в кеше и проверка кеша при компиляции позже,
что-то вроде того, что делает ccache. Это позволяет создавать инкрементальные сборки - где бы вы ни находились
компилировать большую программу, но изменять только небольшую ее часть - чтобы быть намного быстрее
(за счет большего количества операций ввода-вывода на диск для доступа к кешу). Обратите внимание, что вам нужно включить
--jcache как для загрузки, так и для сохранения данных, поэтому вы должны включить его при полной сборке
для более поздней инкрементной сборки (где вы также включаете ее) для ускорения.

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

Чтобы обойти проблему, упомянутую в предыдущем абзаце, вы можете использовать

emscripten_jcache_printf

при добавлении отладочной printfs в ваш код. Эта функция специально предварительно обрабатывается, поэтому
что он не создает глобальную постоянную строку для своего первого аргумента. Видеть
emscripten.h для получения более подробной информации. Обратите внимание, в частности, что у вас уже должен быть
вызовите эту функцию в своем коде * перед * добавлением одной и выполняйте инкрементный
build, так что добавление внешней ссылки (также глобального свойства) не
аннулировать все.

Обратите внимание, что вы должны использовать -g на этапе компоновки (битовый код на JS), для jcache на
работать (иначе JS-минификация может сбить с толку).

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

--save-BC PATH
При компиляции в JavaScript или HTML этот параметр сохранит копию битового кода.
по указанному пути. Битовый код будет включать все связанные файлы, в том числе
стандартные библиотеки и после любых оптимизаций времени компоновки (если таковые имеются).

--memory-init-файл
Если включено, мы создаем отдельный файл инициализации памяти. Это более эффективно
чем хранение данных инициализации памяти, встроенных в JavaScript, в виде текста.
(по умолчанию выключено)

Целевой файл, если указан (-o ), определяет, что будет сгенерировано:

.js
JavaScript

.html
HTML со встроенным JavaScript

.до н.э
Битовый код LLVM (по умолчанию)

.o
Битовый код LLVM (такой же, как .bc)

(Обратите внимание, что если --memory-init-файл используется, то в дополнение к файлу .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