오래전에 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
이지만 SourceMap에 대한 첫 번째 줄 참조만 포함되어 있습니다 a.out.js.map
(맵 자체에는 다음 줄만 포함되어 있습니다 {"version":3,"file":"a.out.js","sources":[],"names":[],"mappings":""}
. 이제 이것은 llvm이 로 컴파일되지 않았 -targets=all
거나 적어도 대상이 없다는 의미라고 생각하므로 js
빌드해 보았습니다. 최신 소프트웨어 패키지 소스에서 가져온 다음 설명된 단계를 엄격히 따르십시오.여기그리고여기, 두 패키지 모두 성공적으로 빌드되었습니다. 그러나 이렇게 실행하면 emiscript는 "3.4를 예상했지만" "(tags/RELEASE_380/final)" 버전 정보를 얻었고 실패한다고 불평합니다. 안전을 위해 소스 빌드를 시작하기 전에 emscripten, llvm 및 clang을 적절하게 제거했습니다. 3.4가최저 한도에서대신 버전만 지원최신 버전은 3.9이고 문서에는 고려해야 할 특별한 고려 사항이 없다고 나와 있기 때문입니다. 어쨌든 소스에서 3.4를 빌드하려고 시도했지만 "js"를 유효한 대상으로 인식하지 못하는 것 같습니다(해당 대상 없이 빌드하고 실행해 보았습니다: 주사위 없음). 제게 이상한 점은 emscripten
apt-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 VM으로, CPU 코어 2개, 4GB RAM, 512MB 비디오 메모리 및 ~50GB 가상 디스크 이미지를 갖춘 32비트 시스템으로 Linux Mint 18 "Sarah" Cinnamon을 실행합니다. 다른 운영 체제는 없으며 기본적으로 일반 설치입니다. 현재 apt 저장소는 clang, llvm 및 emscripten의 기본 버전을 제공합니다.