Intereting Posts
Проблема с расширением подстановочных знаков для диапазона петель Операция перемещения файла над SAMBA сохраняет номер inode? Как перечислять файлы с именем XXXmmyy.dat в естественном хронологическом порядке? Как отправить stdout на несколько команд? Как исправить поиск ключа GPG не удалось: ? Настройка pulseaudio для режима приема Превращение процентов в десятичные числа? Как программно запросить базу данных приложений Freedesktop? Можете войти и просмотреть в общих папках на сервере samba, не можете получить доступ к файлам Bash CD до тех пор, пока в определенной папке Используете ли вы какой-либо скрипт для установки Arch Linux? который? Установить идентификатор родительского процесса из ShellScript, позже удалить все дочерние процессы Logwatch игнорирует самоопределяемую службу, но явная настройка – service service service проблема с debian update Разрешение имени хоста занимает 5 секунд

Emscripten принципиально несовместим с clang on linux

Вопрос

Здравствуйте друзья.

Прошлой ночью я потерял рассудок.

Давным-давно я написал очень грубую и примитивную оболочку на C ++, и я только недавно обнаружил asm.js, поэтому я подумал, что было бы аккуратно пытаться скомпилировать и запустить ее в браузере, но я не могу, потому что apt-пакеты несовместимы. Я установил пакеты llvm, clang и emscripten, и они все в курсе того, что находится в репозиториях. Вот мой тестовый файл, hello.c :

 #include <stdio.h> int main(){ printf("Hello World!\n"); return 0; } 

Это компилируется и выполняется отлично с помощью clang hello.c && ./a.out , но когда я запускаю emcc hello.c я получаю ошибку

/usr/bin/lli: error creating EE: No available targets are compatible with this triple, see -version for the available targets. FAIL: Running the generated program failed!

который генерирует a.out.js , но он содержит только первую ссылку на a.out.js.map как это SourceMap (сама карта содержит только строку: {"version":3,"file":"a.out.js","sources":[],"names":[],"mappings":""} . Теперь я ДУМАЮ, это означает, что llvm не был скомпилирован с помощью -targets=all или, по крайней мере, без js target, поэтому я попытался создать его из исходного кода. Я отобрал последние пакеты, тщательно выполнив шаги, описанные здесь и здесь , и оба пакета были успешно построены. Однако при запуске вроде этого emiscript жаловался, что он «ожидается 3.4», но получил '(tags / RELEASE_380 / final)' для информации о версии, а затем не удалось. Чтобы быть в безопасности, у меня были apt-purged emscripten, llvm и clang, прежде чем начать сборку источника, и я надеюсь, что 3.4 – минимальная версия, а не единственная поддерживаемая версия, потому что последняя сборка – 3,9. Я полагаю, и в документах не было особого внимания. Во всяком случае, я попытался построить 3.4 из источника, но, видимо, esn't распознает «js» как действительную цель (я попытался построить без этого и запустить его в любом случае: без кубиков). Мне emscripten что emscripten apt-package не emscripten правильно скомпилированный clang / llvm в качестве зависимости, так что я, возможно, неправильно делаю вызов? Документы говорят, что я должен просто делать то, что я делаю, но я новичок в clang / emscripten, так что, возможно, мне нужно сначала создать среду clang или, наоборот, явно связать что-то?

Пожалуйста, помогите, я не спал через 48 часов, это работает в Windows (но моя оболочка зависит от readline gnu, поэтому я не хочу просто сдаваться и делать это на окнах), а не Linux, что так же непростительно как он сумасшедший.

SYSINFO

clang / clang ++ version и информация (из clang --version ):

 clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final) Target: i686-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin 

Версия llvm и информация (из lli --version ):

 LLVM version 3.8.0 Optimized build. Built Jul 9 2016 (11:22:59). Default target: i686-pc-linux-gnu Host CPU: broadwell 

Версия emscripten (от emcc --version ): 1.22.1

содержимое самого недавно созданного ~/.emscripten_sanity : 1.22.1|le32-unknown-nacl|/usr/bin|(tags/RELEASE_380/final)

паста наиболее недавно созданного ~/.emscsripten

информация о ядре (from uname -srpmio ): Linux 4.4.0-21-generic i686 i686 i686 GNU/Linux

System – виртуальная виртуальная машина с установленными расширениями, работающая под управлением Linux Mint 18 «Sarah» Cinnamon как 32-битная машина с 2 ядрами процессора, 4 ГБ оперативной памяти, 512 МБ видеопамяти и размером 50 МБ виртуального диска. Никаких других ОС не присутствуют, в основном, ванильная установка. В настоящее время версии clang, llvm и emscripten по умолчанию доступны доступными репозиториями apt.