2013-05-07 7 views
3

tcc-0.9.26의 압축을 푼 후에 gcc 대신 emcc을 지정하고 ar 대신 emar을 지정하도록 구성을 편집합니다. 다음으로, ucontext의 포함은 tccrun에 대해서만 필요하기 때문에 tcc.h에 주석 처리를 제거합니다. 이제는 lib/libtcc1.c에있는 모든 builtins (sub_ddmmss 등)를 사용할 수 없게되지만 Emscripten이 어셈블리 소스 파일 (alloca 구현)을 컴파일하려고 시도하기 때문에 오류가 발생하며이를 해결하는 방법을 모르겠습니다.TCC를 Emscripten으로 컴파일하도록 수정할 수 있습니까? 그렇지 않다면 x86- 생성 C 컴파일러는 어디에서 찾을 수 있습니까?

답변

2

어셈블리에서 구현 된 기능은 훨씬 더 근본적이며 tcc에서 필요합니다. 그들은 정의 또는 주석으로 제거 할 수 있다는 점에서 선택적이 아닙니다. 물론 tcc 자체를 사용하지 않도록 수정할 수는 있지만 제거한 기능의 구현을 제공해야합니다. 따라서 비 gcc/clang 컴파일러로 tcc를 컴파일하는 유일한 방법은 어셈블리 함수를 크게 수정하거나 어셈블리 함수를 다시 구현하는 것입니다.

+0

흠. Emscripten에서 [CC500] (http://homepage.ntlworld.com/edmund.grimley-evans/cc500/) 또는 Bellard의 otcc도 사용할 수 없습니다. 최선의 선택은 jslinux/jsmodem을 사용하고 에뮬레이터에서 tcc를 실행 한 후 바이너리를 꺼내는 것입니다. –