国产精品爱久久久久久久小说,女人扒开腿让男人桶到爽 ,亚洲欧美国产双大乳头,国产成人精品综合久久久久,国产精品制服丝袜无码,免费无码精品黄av电影,黑色丝袜无码中中文字幕,乱熟女高潮一区二区在线

    Emscripten教程之emcc編譯命令

    2020-4-14    seo達(dá)人

    語法


    emcc [options] file ...

    這個輸入文件file,既可以是clang可以編譯的C/C++語言,也可以是二進(jìn)制形式的llvm bitcode或者人類可讀形式的llvm assembly文件。

    參數(shù)

    大部分clang或者gcc的選項(option)都是可以工作的,比如:

    # 顯示信息 emcc --help # 顯示編譯器版本信息 emcc --version

    如果想看當(dāng)前Emscripten中clang版本支持的全部選項列表,可以直接使用命令:
    clang --help.

    emcc修改的或者emcc中新的選項列在下面:

    首先是一些編譯優(yōu)化flag,它們-O0,-O1,-O2,-Os,-Oz,-O3。

    -O0:
    不進(jìn)行編譯優(yōu)化(這是默認(rèn)情況)。當(dāng)你剛開始移植項目是推薦使用它,因為它會包含許多斷言。

    -O1:
    簡單優(yōu)化。推薦你在既想縮短編譯時間又想編譯優(yōu)化時使用。它畢竟比-O2級別的優(yōu)化編譯起來快多了。它會進(jìn)行asm.js和llvm的-O1進(jìn)行優(yōu)化,它會relooping,會刪除運(yùn)行時斷言和C++異常捕獲,它也會使得-s ALIASING_FUNCTION_POINTERS=1。

    想要C++異常捕獲重新可用,請設(shè)置:-s DISABLE_EXCEPTION_CATCHING=0。

    -O2:
    和-O1類似,不過多了JavaScript級別的優(yōu)化以及一些llvm -O3的優(yōu)化項。當(dāng)你想發(fā)布項目的時候,推薦使用本級別優(yōu)化。

    -O3:
    和-O2類似,不過比-O2又多了一些JavaScript優(yōu)化,而且編譯時間明顯比-O2長。這個也推薦在發(fā)布版本的時候使用。

    -Os:
    和-O3類似,不過增加了額外的優(yōu)化以減小生成的代碼體積,代價是比-O3性能差一點。-Os優(yōu)化會同時影響llvm bitcode 和JavaScript文件的生成。

    -Oz:
    和-Os類似,不過進(jìn)一步減小了代碼體積。

    -s OPTION=VALUE
    傳給編譯器的所有涉及到JavaScript代碼生成的選項。選項列表,請見settings.js

    對于某個選項的值,不僅可以直接在emcc命令行里面設(shè)定,也可以把他們寫成json文件。比如下面,就是將DEAD_FUNCTIONS選項的值放到了path/to/file文件里,emcc里面?zhèn)鬟@個文件的路徑。

    -s DEAD_FUNCTIONS=@/path/to/file
    note: 1、文件內(nèi)容可以是:["_func1","_func2"]; 2、文件路徑必須是絕對的,不能是相對的。

    -g:
    這是保留調(diào)試信息flag。

    • 如果只是編譯到bitcode,那就和clang和gcc中的-g一樣。
    • 如果是要編譯到JavaScript,-g就等于-g3。

    -g<level>
    控制打印的調(diào)試信息數(shù)量,每一個level都是在前一個level的基礎(chǔ)上編譯的:

    • -g0:不保留調(diào)試信息。
    • -g1:保留空格,不壓縮。
    • -g2:保留函數(shù)名。
    • -g3:保留變量名,與-g同。變量名一般不是必須編譯后保留的,但是如果保留了,可以推斷變量的目的,對吧。
    • -g4:保留llvm 調(diào)試信息,這是能調(diào)試的最高級別。
    note:
    優(yōu)化級別越高,編譯時間越長

    --profiling:

    --profiling-funcs:

    --tracing:
    啟用Emscripten的tracing API。

    --emit-symbol-map:

    --js-opts<level>:
    允許JavaScript優(yōu)化,有兩個值:
    0:不允許JavaScript優(yōu)化器允許;
    1:使用JavaScript優(yōu)化器。
    通常用不到我們設(shè)置這一項, 因為設(shè)置-O后面的level的時候,這個項就能順便取到一個合適的值。

    note:
    有些選項會重寫這個flag的值,比如EMTERPRETIFY, DEAD_FUNCTIONS, OUTLINING_LIMIT, SAFE_HEAP 和 SPLIT_MEMORY會將js-opts=1,因為他們依賴js優(yōu)化器。

    --llvm-opts<level>:
    啟用llvm優(yōu)化。它的取值有有:

    • 0:不使用llvm優(yōu)化
    • 1:llvm -O1優(yōu)化
    • 2:llvm -O2優(yōu)化
    • 3:llvm -O3優(yōu)化

    和--js-opts<level>一樣,通常用不到我們設(shè)置這一項, 因為設(shè)置-O后面的level的時候,這個項就能順便取到一個合適的值。

    --llvm-lto<level>:
    啟用llvm 連接時 優(yōu)化。可以取值0,1,2,3。

    --closure <on>:
    運(yùn)行壓縮編譯器(Closure Compiler),可能的取值有,0,1,2:

    • 0:是不啟用壓縮編譯器。
    • 1:啟用。
    • 2:啟用。

    --pre-js <file>
    生成代碼前,指定一個要把內(nèi)容添加進(jìn)來的文件。

    --post-js <file>
    生成代碼后,指定一個要把內(nèi)容添加進(jìn)來的文件。

    --embed-file <file>
    指定一個帶路徑的文件嵌入到編譯生成的js代碼里。路徑是相對于編譯時的當(dāng)前路徑。如果傳的是一個目錄,則目錄下所有文件的內(nèi)容都會被嵌入到將來生成的js代碼中。

    --preload-file <name>
    異步運(yùn)行編譯代碼前,指定一個預(yù)加載的文件。路徑是相對于編譯時的當(dāng)前路徑。如果傳的是一個目錄,則目錄下所有文件的內(nèi)容都會被預(yù)加載到一個.data文件中。

    --exclude-file <name>
    從 –embed-file and –preload-file后面的目錄中排除一些文件,支持使用通配符*。

    --use-preload-plugins
    告訴文件打包器當(dāng)文件加載時,運(yùn)行預(yù)加載插件。它用來執(zhí)行諸如使用瀏覽器解碼器解碼圖片和音頻等。

    --shell-file <path>
    指定要生成HTML的模板文件。

    --source-map-base <base-url>

    --minify 0
    等于-g1。

    --js-transform <cmd>
    優(yōu)化之前,生成代碼之后,設(shè)定這一條命令。這條命令可以讓你修改JavaScript代碼。之后,編譯器會將修改的和未修改的一起進(jìn)行編譯優(yōu)化。

    --bind
    啟用bingdings編譯源代碼。bingings是Emscripten中連接C++和JavaScript代碼的一類API。

    --ignore-dynamic-linking
    告訴編譯器忽視動態(tài)鏈接,之后用戶就得手動鏈接到共享庫。

    --js-library <lib>
    定義除了核心庫(src/library_*)以外的js庫。

    -v
    打開詳細(xì)輸出。
    這個設(shè)置為把-v傳給clang,并且啟用EMCC_DEBUG生成編譯階段的中間文件。它也會運(yùn)行Emscripten關(guān)于工具鏈的內(nèi)部的完整性檢查。

    tip: emcc -v是診斷錯誤的有用工具,不管你是否附加其他參數(shù)。

    --cache

    --clear-cache

    --clear-ports

    --show-ports

    --save-bc PATH

    --memory-init-file <on>
    規(guī)定是否單獨(dú)生成一個內(nèi)存初始化文件。取值包括0和1.

    • 0:不單獨(dú)生成.mem文件。
    • 1:單獨(dú)生成.mem文件。

    -Wwarn-absolute-paths
    啟用在-I和-L命令行指令中使用絕對路徑的警告。這是用來警告無意中使用了絕對路徑的。在引用非可移植的本地系統(tǒng)頭文件時,使用絕對路徑有時是很危險的。

    --proxy-to-worker

    --emrun
    使生成的代碼能夠感知emrun命令行工具。當(dāng)運(yùn)行emran生成的應(yīng)用程序時,這樣設(shè)置就允許stdout、stderr和exit(returncode)被捕獲。

    --cpuprofiler
    在生成的頁面上嵌入一個簡單的CPU分析器。使用這個來執(zhí)行粗略的交互式性能分析。

    --memoryprofiler
    在生成的頁面上嵌入內(nèi)存分配跟蹤器,使用它來分析應(yīng)用程序Emscripten堆的使用情況。

    --threadprofiler
    在生成的頁面上嵌入一個線程活動分析器。當(dāng)進(jìn)行多線程編譯時,使用它來分析多線程應(yīng)用程序。
    --em-config

    --default-obj-ext .ext

    --valid-abspath path
    設(shè)置一個絕對路徑的白名單,以防止關(guān)于絕對路徑的警告。

    -o <target>
    編譯輸出的文件格式。target可以取值為:

    • name.js:JavaScript文件;
    • name.html:HTML+js文件。把js單獨(dú)生成是為了減小頁面加載時間。
    • name.bc:llvm bitcode。這是默認(rèn)值。
    • name.o:和上面一樣。
    note:
    如果你用了--memory-init-file,則還會從js文件中再單獨(dú)分出一部分代碼為.mem文件。

    -c
    生成llvm bitcode代碼,而不是JavaScript。

    --separate-asm
    把a(bǔ)sm.js文件單獨(dú)生成到一個文件中。這樣可以減少啟動時的內(nèi)存加載。

    --output_eol windows|linux
    規(guī)定生成的文本文件的行尾,如果是–output_eol windows,就是windows rn行尾,如果是–output_eol linux,則生成Linux行尾的文本文件。

    --cflags

    環(huán)境變量


    emcc會受到幾個環(huán)境變量的影響,如下:

    • EMMAKEN_JUST_CONFIGURE
    • EMMAKEN_JUST_CONFIGURE_RECURSE
    • EMCONFIGURE_JS
    • EMCONFIGURE_CC
    • EMMAKEN_CXX
    • EMMAKEN_COMPILER
    • EMMAKEN_CFLAGS
    • EMCC_DEBUG

    這幾個里面比較有意思的是EMCC_DEBUG。比如,如果你在編譯之前設(shè)置set EMCC_DEBUG=1,那么編譯的時候會把編譯過程的調(diào)試信息和編譯各個階段的中間文件輸出到一個臨時目錄,這算是給開發(fā)者提供一些編譯期間的幫助或者說調(diào)試信息吧。


    Emscripten主題系列文章是emscripten中文站點的一部分內(nèi)容。
    第一個主題介紹代碼可移植性與限制
    第二個主題介紹Emscripten的運(yùn)行時環(huán)境
    第三個主題第一篇文章介紹連接C++和JavaScript
    第三個主題第二篇文章介紹embind
    第四個主題介紹文件和文件系統(tǒng)
    第六個主題介紹Emscripten如何調(diào)試代碼

    日歷

    鏈接

    個人資料

    存檔

    主站蜘蛛池模板: 妺妺窝人体色www婷婷| 亚洲精品国产成人99久久6| 欧美偷拍精品| 色天使亚洲| 中国人妻被两个老外三p| 亚洲无码一区二区三区| 久久久久久中文| 白嫩日本少妇做爰| 无码午夜福利免费区久久| 午夜久久福利| 久久月本道色综合久久| 欧美级特黄aaaaaa片| 国产精品成人在线| 看片一区| 亚洲日韩中文第一精品| 成 人 网 站不卡在线观看| 波多野42部无码喷潮在线| 午夜欧美精品| 男人添女人下部高潮全视频| 久久精品在线观看| 秋霞av网| 亚洲成在人线在线播放无码| 精品亚洲国产成人a片app| 黄色的毛片| 国产性猛交xx乱| 欧美老熟妇乱子| 护士av无码在线观看| 在线成人观看| 一本久道中文无码字幕av| 米奇影院888奇米色99在线| 99cao| 午夜极品| 亚洲2017天堂色无码| 尤物tv国产精品看片在线| 午夜伦理影院| 精品1卡二卡三卡四卡老狼| 九月婷婷人人澡人人添人人爽| 亚洲日韩片无码中文字幕| 91艹| 最新av网址在线观看| 海角社区在线视频播放观看|