СИСИНФО

СИСИНФО

Давным-давно я написал очень грубую и примитивную оболочку на 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!

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

СИСИНФО

Версия clang/clang++ и информация (из 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

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

Система представляет собой виртуальную машину VirtualBox с установленными расширениями, работающую под управлением Linux Mint 18 "Sarah" Cinnamon в качестве 32-битной машины с 2 ядрами ЦП, 4 ГБ ОЗУ, 512 МБ видеопамяти и образом виртуального диска размером ~50 ГБ. Никаких других ОС нет, в основном это ванильная установка. В настоящее время имеются версии clang, llvm и emscripten по умолчанию, предоставленные репозиториями apt.

Связанный контент