영어프랑스어스페인어

Ad


온웍스 파비콘

emcc - 클라우드의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 공급자에서 emcc 실행

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 emcc 명령입니다.

프로그램:

이름


emcc - Emscripten 컴파일러 프런트엔드

기술


emcc [옵션] 파일...

다리 표준 gcc/g++ 옵션 의지 작동, for 예:
--도움 이 정보 표시

--번역
컴파일러 버전 정보 표시

옵션 are 수정 or in emcc 과 같습니다 :
-O0 최적화 없음(기본값)

-O1 asm.js, LLVM을 포함한 간단한 최적화 -O1 최적화 및 런타임 없음
어설션 또는 C++ 예외 포착(C++ 예외 포착을 다시 활성화하려면 다음을 사용하십시오. -s
DISABLE_EXCEPTION_CATCHING=0 ). (다른 옵션의 영향에 대한 자세한 내용은
tools/shared.py 및 src/settings.js의 apply_opt_level() 참조) 참고:
최적화는 중급이 아닌 JavaScript로 컴파일할 때만 수행됩니다.
비트코드, EMCC_OPTIMIZE_NORMALLY=1로 구축하지 않는 한*
당신은 당신이 무엇을 알고!)

-O2 As -O1, relooper(루프 재생성), LLVM -O2 최적화 및

-s ALIASING_FUNCTION_POINTERS=1

-O3 As -O2, 그리고 생성된 코드를 망가뜨릴 수 있는 위험한 최적화! 이것은 추가

-s FORCE_ALIGNED_MEMORY=1 -s 더블_모드=0 -s PRECISE_I64_MATH=0 --폐쇄 1
--llvm-lto 1

이것은 전혀 권장되지 않습니다. 더 나은 아이디어는 이들 각각을 개별적으로 시도하는 것입니다.
상단 -O2 작동하는지 확인합니다. wiki 및 src/settings.js를 참조하십시오( -s 옵션)


-s 옵션=값
emscripten 컴파일러에 JavaScript 코드 생성 옵션이 전달되었습니다. 을 위해
사용 가능한 옵션은 src/settings.js를 참조하세요. 목록 옵션의 경우
예를 들어 대부분의 쉘에는 인용 부호가 필요합니다.

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

or

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

(둘 중 하나에 외부 "s가 없으면 오류가 발생합니다)

예를 들어 값을 읽을 파일을 지정할 수도 있습니다.

-s DEAD_FUNCTIONS=@/경로/대상/파일

내용 /경로/대상/파일 읽고 JSON.parsed되어 DEAD_FUNCTIONS로 설정됩니다.
(그래서 파일은 다음을 포함할 수 있습니다.

["_func1", "func2"]

). 경로는 상대 경로가 아니라 절대 경로여야 합니다.

-g 디버그 정보를 사용합니다. 마지막 컴파일 단계에서 필요합니다.
비트코드를 JavaScript로 변환하거나 기본적으로 다음에서 제거합니다. -O1 이상. ~ 안에
-O0, 줄 번호가 생성된 코드에 표시됩니다. ~ 안에 -O1 그리고 위에서
옵티마이저는 해당 주석을 제거합니다. 그러나이 플래그는 다음과 같은 효과가 있습니다.
이름 맹 글링 또는 축소를 유발하는 모든 것을 비활성화합니다 (폐쇄 또는
패스 등록).

--유형 배열
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 모드에서 클로저는 컴파일된 파일 주변의 '쉘' 코드에서만 사용됩니다.
코드(컴파일된 코드는 사용자 정의 asm.js minifier에 의해 처리됨).

참고: 클로저 컴파일러가 메모리 부족에 도달하면 JAVA_HEAP_SIZE를 조정해 보십시오.
환경(예: 4096GB의 경우 4m까지).

--js-변환
최적화되기 전에 생성된 코드에서 호출됩니다. 이렇게 하면
예를 들어 일부 코드를 추가하거나 일부 코드를 제거하는 방식으로 JavaScript를 수정합니다.
이러한 수정 사항은 생성된 코드와 함께 최적화됩니다.
제대로. 생성된 코드의 파일 이름으로 호출됩니다.
매개변수; 코드를 수정하려면 원본 데이터를 읽은 다음 추가할 수 있습니다.
또는 수정된 데이터로 덮어씁니다. 공백으로 구분된 것으로 해석됩니다.
인수 목록(예: "python processor.py"의 경우 Python
실행할 스크립트.

--pre-js
생성된 코드 앞에 내용이 추가되는 파일입니다. 이것은 *이전*에 수행됩니다.
클로저 컴파일러가 실행되면 제대로 축소됩니다.

--post-js
생성된 코드 뒤에 내용이 추가되는 파일 이것은 *이전*에 수행됩니다.
클로저 컴파일러가 실행되면 제대로 축소됩니다.

--포함 파일
생성된 JavaScript 내부에 삽입할 파일입니다. 컴파일된 코드는 다음을 수행할 수 있습니다.
여기에 주어진 것과 동일한 이름으로 현재 디렉토리의 파일에 액세스하십시오. 그래서 만약
--포함 파일 dir/file.dat, 그런 다음 (1) dir/file.dat는 상대적으로 존재해야 합니다.
emcc를 실행하고 (2) 컴파일된 코드는 다음을 통해 파일을 찾을 수 있습니다.
동일한 경로인 dir/file.dat를 읽습니다. 여기에 디렉토리가 전달되면 전체
내용이 삽입됩니다.

--preload-파일
컴파일된 코드를 비동기적으로 실행하기 전에 미리 로드할 파일입니다. 그렇지 않으면
와 유사한 --포함 파일단, 이 옵션은 생성할 때만 관련이 있습니다.
HTML(비동기 바이너리 XHR 사용) 또는 웹 페이지에서 사용할 JS. 만약에
여기에 디렉토리가 전달되면 전체 내용이 미리 로드됩니다. 미리 로드된 파일
filename.data에 저장됩니다. 여기서 filename.html은 컴파일하는 기본 파일입니다.
에게. 코드를 실행하려면 .html과 .data가 모두 필요합니다.

emcc는 tools/file_packager.py를 실행하여 임베디드 및
미리 로드된 파일. 원하는 경우 파일 패키저를 직접 실행할 수 있습니다. 문서를 참조하세요.
그 파일 안에. 그런 다음 파일 패키저의 출력을 emcc에 넣어야 합니다.
--pre-js, 기본 컴파일된 코드보다 먼저 실행되도록(또는
다른 방법).

--압축
컴파일된 코드와 포함/미리 로드된 파일을 모두 압축합니다. 이어야 한다
삼루타,

, ,

여기서 native_encoder는 stdin을 stdout으로 압축하는 네이티브 실행 파일입니다(
가능한 가장 간단한 인터페이스), js_decoder는
decoder이고 js_name은 디코더 파일에서 호출할 함수의 이름입니다(이는
배열/유형 배열을 수신하고 배열/유형 배열을 반환해야 합니다. 압축
HTML을 생성할 때만 작동합니다. 압축이 켜져 있으면 모든 파일이
미리 로드된 파일은 하나의 큰 아카이브에 압축되어 있으며 이는
출력 HTML이지만 접미사 .data.compress가 있음

--작게 하다
0: 생성된 JavaScript의 공백을 축소하지 않습니다(기본값은 -O0, -O1, 또는 if
-g 사용)

1: 생성된 자바스크립트 축소

공백(기본값 -O2+ 가정 -g 사용되지 않음)

--나뉘다
디버깅을 쉽게 하기 위해 결과 자바스크립트 파일을 조각으로 나눕니다. 이 옵션
Javascript가 생성된 경우에만 작동(대상 -o .js). 기능이 있는 파일
선언은 실행 시 기본 파일보다 먼저 로드되어야 합니다.

"-g" 옵션이 없는 경우:

접미사를 사용하여 주어진 크기까지 함수 선언으로 파일을 생성합니다.
"_functions.partxxx.js" 및 접미사가 ".js"인 기본 파일.

"-g" 옵션 사용:

C 소스 파일의 디렉토리 구조를 재생성하고 기능을 저장합니다.
접미사 ".js"가 있는 각 C 파일의 선언. 그런 파일이면
주어진 크기를 초과하면 접미사가 ".partxxx.js"인 파일이 생성됩니다. 메인
파일은 기본 디렉토리에 있으며 접미사 ".js"가 있습니다.

--묶다 C/C++를 연결하는 "embind" 바인딩 방식을 사용하여 소스 코드를 컴파일합니다.
그리고 JS.

--동적 연결 무시 일반적으로 emcc는 동적 연결을 다음과 같이 처리합니다.
동적 라이브러리의 코드에서 링크하여 정적 링크. 다음과 같은 경우 실패합니다.
동일한 동적 라이브러리가 두 번 이상 연결되었습니다. 이 옵션을 사용하면 동적 연결
무시되어 빌드 시스템이 오류 없이 진행될 수 있습니다. 그러나 당신은
나중에 직접 공유 라이브러리에 수동으로 링크해야 합니다.

--쉘 파일
HTML 출력을 생성할 때 사용되는 스켈레톤 HTML 파일의 경로 이름입니다. 껍질
사용된 파일에는 {{{ SCRIPT_CODE }}} 토큰이 있어야 합니다.
인수는 HTML 이외의 대상이 다음을 사용하여 지정된 경우 무시됩니다. -o 옵션을 선택합니다.

--js-라이브러리
Emscripten의 src/library_*에 추가로 사용할 JavaScript 라이브러리

-v 상세 출력을 켭니다. 이것은 지나갈 것이다 -v Clang에 연결하고 EMCC_DEBUG를 활성화하여
emcc의 운영 세부 정보

--jcache
JavaScript 캐시를 사용하십시오. 이것은 기본적으로 비활성화되어 있습니다. 활성화되면 emcc는 다음을 저장합니다.
컴파일 결과를 캐시에 저장하고 나중에 컴파일할 때 캐시를 확인하고,
ccache가하는 것과 같은 것. 이를 통해 증분 빌드가 가능합니다.
큰 프로그램을 컴파일하지만 그것의 작은 부분만 수정 - 훨씬 더 빠름
(캐시 액세스를 위한 더 많은 디스크 IO 비용으로). 활성화해야 합니다.
--jcache 데이터 로드 및 저장을 위해 전체 빌드에서 활성화해야 합니다.
나중에 증분 빌드(활성화한 경우)의 속도를 높일 수 있습니다.

캐싱은 컴파일의 4개 부분에서 개별적으로 작동합니다. 'pre'는 유형이고 전역입니다.
변수; 그런 다음 해당 정보는 함수인 'funcs'에 입력됩니다(이는
우리는 병렬화), 그리고 '포스트'를 기반으로 최종 정보를 추가합니다.
기능(예: long64 지원 코드가 필요한지). 마지막으로 'jsfuncs'는
JavaScript 수준의 최적화. 4개의 파트는 각각 별도로 캐싱할 수 있지만
서로 영향을 미칠 수 있음을 참고하십시오. 단일 C++ 파일을 다시 컴파일하면
전역 변수 변경 - 예를 들어 전역 변수를 추가, 제거 또는 수정합니다.
printf를 추가하거나 컴파일 시간 타임스탬프를 추가하면 'pre'는
캐시에서 로드됩니다. 그리고 'pre'의 출력은 'funcs'와 'post'로 보내지므로,
또한 무효화되고 'jsfuncs'만 캐시됩니다. 따라서 수정을 피하십시오
캐싱이 완전히 작동하도록 전역.

이전 단락에서 언급한 문제를 해결하려면 다음을 사용할 수 있습니다.

emscripten_jcache_printf

디버그 printfs를 코드에 추가할 때. 그 기능은 특별히 사전 처리되어 있으므로
첫 번째 인수에 대해 전역 상수 문자열을 만들지 않습니다. 보다
자세한 내용은 emscripten.h를 참조하십시오. 특히 이미
하나를 추가하고 증분을 수행하기 *전에* 코드에서 해당 함수를 호출합니다.
외부 참조(또한 전역 속성)를 추가해도
모든 것을 무효화합니다.

당신이 사용해야합니다 -g 연결 단계(비트코드에서 JS로) 동안 jcache에서
작동합니다(그렇지 않으면 JS 축소로 인해 혼동될 수 있음).

--캐시 지우기
컴파일된 emscripten 시스템 라이브러리(libc++,
libc++abi, libc). 이것은 일반적으로 자동으로 처리되지만 llvm을 업데이트하면
인플레이스(새 버전을 위한 다른 디렉토리를 갖는 대신), 캐싱
메커니즘이 혼동될 수 있습니다. 캐시를 지우면 다음과 관련된 이상한 문제를 해결할 수 있습니다.
라이브러리 파일과 연결하지 못하는 clang과 같은 캐시 비호환성. 이거 역시
jcache 및 bootstrapped relooper와 같은 다른 캐시된 데이터를 지웁니다. 후
캐시가 지워지면 이 프로세스가 종료됩니다.

--저장-BC PATH
JavaScript 또는 HTML로 컴파일할 때 이 옵션은 비트코드의 복사본을 저장합니다.
지정된 경로로. 비트코드에는 다음을 포함하여 링크되는 모든 파일이 포함됩니다.
표준 라이브러리 및 링크 타임 최적화 이후(있는 경우).

--메모리 초기화 파일
켜져 있으면 별도의 메모리 초기화 파일을 생성합니다. 이것이 더 효율적입니다
JavaScript 내부에 포함된 메모리 초기화 데이터를 텍스트로 저장하는 것보다
(기본값은 꺼져 있음)

지정된 경우 대상 파일(-o ), 생성될 항목을 정의합니다.

.js
자바 스크립트

.html
포함된 JavaScript가 포함된 HTML

.기원전
LLVM 비트코드(기본값)

.영형
LLVM 비트코드(.bc와 동일)

(만약 --메모리 초기화 파일 .js 또는 .html 파일 외에도
.mem 파일도 나타납니다.)

XNUMXD덴탈의 -c 옵션(링커를 실행하지 않도록 gcc에 지시)은 LLVM 비트코드를
emcc는 빌드의 최종 연결 단계에서만 JavaScript를 생성하므로 생성됩니다.

입력 파일은 Clang이 처리할 수 있는 소스 코드 파일(C 또는 C++), LLVM일 수 있습니다.
바이너리 형식의 비트코드 또는 사람이 읽을 수 있는 형식의 LLVM 어셈블리 파일.

emcc는 여러 환경 변수의 영향을 받습니다. 자세한 내용은 emcc 소스 보기
('os.environ' 검색).

emcc: 지원되는 대상: llvm 비트코드, javascript, NOT elf(autoconf는 elf를 보고 싶어함)
공유 개체 지원을 활성화하려면 위)

저작권


Copyright © 2013 Emscripten 작성자(AUTHORS.txt 참조) 이것은 무료이며 오픈 소스입니다.
MIT 라이선스에 따른 소프트웨어. 보증이 없습니다. 상품성 또는
특정 목적을 위한 적합성.

onworks.net 서비스를 사용하여 온라인에서 emcc 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

Linux 명령

Ad