İngilizceFransızcaİspanyolca

Ad


OnWorks favicon'u

emcc - Bulutta Çevrimiçi

Emcc'yi OnWorks ücretsiz barındırma sağlayıcısında Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi öykünücüsü veya MAC OS çevrimiçi öykünücüsü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen emcc komutudur.

Program:

ADI


emcc - Emscripten derleyici ön ucu

TANIM


emcc [seçenekler] dosyası...

köprü normal gcc/g++ seçenekleri irade çalışmak, için örnek:
--yardım et Bu bilgiyi göster

--versiyon
Derleyici sürüm bilgilerini görüntüle

Opsiyonlar o vardır değiştirilmiş or yeni in emcc şunları içerir:
-O0 Optimizasyon yok (varsayılan)

-O1 asm.js, LLVM dahil basit optimizasyonlar -O1 optimizasyonlar ve çalışma zamanı yok
iddialar veya C++ istisna yakalama (C++ istisna yakalamayı yeniden etkinleştirmek için -s
DISABLE_EXCEPTION_CATCHING=0 ). (Farklı seçeneklerin etkileri hakkında ayrıntılar için
düzeyleri için, araçlar/shared.py ve ayrıca src/settings.js içindeki application_opt_level()'e bakın.) Not:
Optimizasyonlar yalnızca JavaScript'e derlenirken yapılır, orta seviye için değil
bitcode, *EMCC_OPTIMIZE_NORMALLY=1 ile oluşturmadığınız sürece* (önerilmez
ne yaptığını biliyorsun!)

-O2 As -O1, artı relooper (loop rekreasyonu), LLVM -O2 optimizasyonlar ve

-s ALIASING_FUNCTION_POINTERS=1

-O3 As -O2, artı oluşturulan kodu bozabilecek tehlikeli optimizasyonlar! Bu ekler

-s FORCE_ALIGNED_MEMORY=1 -s ÇİFT_MOD=0 -s PRECISE_I64_MATH=0 --kapanış 1
--llvm-lto 1

Bu hiç tavsiye edilmez. Bunların her birini ayrı ayrı denemek daha iyi bir fikirdir.
üst -O2 ne işe yaradığını görmek için. Wiki ve src/settings.js'ye bakın (için -s seçenekleri)
daha fazla bilgi için.

-s SEÇENEK=DEĞER
JavaScript kod oluşturma seçeneği, emscripten derleyicisine aktarıldı. İçin
kullanılabilir seçenekler, bkz. src/settings.js Liste halindeki seçenekler için,
çoğu kabukta tırnak işareti gerekir, örneğin

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

or

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

(bunlardan herhangi birinde harici "s olmadan, bir hata alırsınız)

Değerin okunacağı bir dosya da belirtebilirsiniz, örneğin,

-s DEAD_FUNCTIONS=@/yol/to/dosya

İçeriği /yol/to/dosya okunacak, JSON.parsed ve DEAD_FUNCTIONS olarak ayarlanacak
(böylece dosya şunları içerebilir:

["_func1", "fonk2"]

). Yolun göreceli değil mutlak olması gerektiğini unutmayın.

-g Hata ayıklama bilgilerini kullanın. Son derleme aşamasında buna ihtiyacınız olduğunu unutmayın.
bit kodunu JavaScript'e çevir, yoksa varsayılan olarak onu kaldıracağız. -O1 ve yukarıda. İçinde
-O0, satır numaraları oluşturulan kodda gösterilecektir. İçinde -O1 ve yukarıda,
optimizer bu yorumları kaldırır. Ancak bu bayrağın etkisi var
ad değiştirmeye veya küçültmeye neden olan herhangi bir şeyi devre dışı bırakmak (kapatma veya
geçiş kaydı).

--typed-diziler
0: Yazılan dizi yok 1: Paralel yazılan diziler 2: Paylaşılan (C benzeri) yazılan diziler
(Varsayılan)

--llvm-seçenekler
0: LLVM optimizasyonu yok (varsayılan -O01: -O1 LLVM optimizasyonları (varsayılan
-O12: -O2 LLVM optimizasyonları 3: -O3 LLVM optimizasyonları (varsayılan -O2+)

--llvm-lto
0: LLVM LTO yok (varsayılan -O2 ve altı) 1: LLVM LTO (varsayılan -O3) Not: Eğer
LLVM optimizasyonları çalıştırılmaz (bkz. --llvm-seçenekler), bunu 1 olarak ayarlamanın bir etkisi yoktur.

--kapanış
0: Kapatma derleyicisi yok (varsayılan -O2 ve aşağıda) 1: Kapatma derleyicisini çalıştırın. Bu
kod boyutunu büyük ölçüde azaltır ve bazı durumlarda çalışma zamanı hızını artırabilir (ancak
tersi de olabilir). Çalıştırmanın zaman aldığını ve biraz gerektirebileceğini unutmayın.
kodda değişiklikler. Bu varsayılan olarak çalıştırılır -O3.

asm.js modunda, kapatma yalnızca derlenmiş olan 'kabuk' kodunda kullanılacaktır.
kodu (derlenmiş kod, özel asm.js küçültücüsü tarafından işlenecektir).

Not: Kapatma derleyicisinde bellek yetersiz kalırsa, JAVA_HEAP_SIZE değerini
(örneğin, 4096GB için 4m'ye kadar).

--js-dönüşüm
optimize edilmeden önce oluşturulan kodda çağrılır. Bu size izin verir
JavaScript'i değiştirin, örneğin bir şekilde bazı kodlar ekleyin veya bazı kodları kaldırın
bu değişikliklerin oluşturulan kodla birlikte optimize edileceğini
uygun şekilde. olarak oluşturulan kodun dosya adıyla çağrılacak
parametre; kodu değiştirmek için orijinal verileri okuyabilir ve ardından ona ekleyebilirsiniz.
veya değiştirilen verilerle üzerine yazın. boşlukla ayrılmış olarak yorumlanır
argüman listesi, örneğin, "python işlemci.py" bir python'a neden olur
çalıştırılacak komut dosyası.

--ön-js
İçeriği oluşturulan koddan önce eklenen bir dosya. Bu *önce* yapılır
optimizasyon, bu nedenle kapatma derleyicisi çalıştırılırsa düzgün şekilde küçültülür.

--post-js
İçeriği oluşturulan koddan sonra eklenen bir dosya Bu *önce* yapılır
optimizasyon, bu nedenle kapatma derleyicisi çalıştırılırsa düzgün şekilde küçültülür.

--embed dosyası
Oluşturulan JavaScript'in içine yerleştirilecek bir dosya. Derlenmiş kod mümkün olacak
geçerli dizindeki dosyaya burada verilenle aynı adla erişin. öyleyse eğer
Yapmalısın --embed dosyası dir/file.dat, ardından (1) dir/file.dat,
emcc'yi çalıştırdığınız yerde ve (2) derlenmiş kodunuz dosyayı şu şekilde bulabilecektir:
aynı yolu okumak, dir/file.dat. Burada bir dizin geçirilirse, tamamı
içerikler eklenecektir.

--önyükleme dosyası
Derlenmiş kodu eşzamansız olarak çalıştırmadan önce önceden yüklenecek bir dosya. Aksi halde
Benzer --embed dosyası, bu seçeneğin yalnızca oluşturulurken geçerli olması dışında
HTML (eşzamansız ikili XHR'leri kullanır) veya bir web sayfasında kullanılacak JS. Eğer
buraya bir dizin geçirilirse, tüm içeriği önceden yüklenecektir. önceden yüklenmiş dosyalar
dosyaadı.data içinde depolanır, burada dosyaadı.html, derlemekte olduğunuz ana dosyadır
ile. Kodunuzu çalıştırmak için hem .html hem de .data'ya ihtiyacınız olacak.

emcc, gömülü ve
önceden yüklenmiş dosyalar İsterseniz dosya paketleyiciyi kendiniz çalıştırabilirsiniz, bkz.
o dosyanın içinde. Daha sonra dosya paketleyicisinin çıktısını bir emcc'ye koymalısınız.
--ön-js, böylece ana derlenmiş kodunuzdan önce yürütülür (veya
başka bir şekilde).

--sıkıştırma
Hem derlenmiş kodu hem de gömülü/önceden yüklenmiş dosyaları sıkıştırın. bir olmalı
üçlü

, ,

burada native_encoder stdin'i stdout'a sıkıştıran yerel bir yürütülebilir dosyadır (
mümkün olan en basit arayüz), js_decoder bir JavaScript dosyasıdır.
kod çözücü ve js_name, kod çözücü dosyasında çağrılacak işlevin adıdır (ki
bir dizi/yazılı dizi almalı ve dizi/yazılı dizi döndürmelidir. Sıkıştırma
yalnızca HTML oluştururken çalışır. Sıkıştırma açıkken, belirtilen tüm dosyalanmış
önceden yüklenmiş dosyalar, arşivle aynı adı taşıyan büyük bir arşivde sıkıştırılır.
HTML çıktısı ancak .data.compress son ekiyle

--küçültmek
0: Oluşturulan JavaScript'in boşluk alanını küçültmeyin (varsayılan -O0, -O1, ya da eğer
-g kullanıldı)

1: Oluşturulan JavaScript'leri küçültün

boşluk (varsayılan -O2+, varsayarsak -g Kullanılmıyor)

--bölmek
Hata ayıklamayı kolaylaştırmak için elde edilen javascript dosyasını parçalara böler. Bu seçenek
yalnızca Javascript oluşturulduysa çalışır (hedef -o .js). İşlevli dosyalar
bildirimler, yürütme sırasında ana dosyadan önce yüklenmelidir.

"-g" seçeneği olmadan:

Sonek ile verilen boyuta kadar işlev bildirimleri olan dosyalar oluşturur
"_functions.partxxx.js" ve ".js" son ekine sahip bir ana dosya.

"-g" seçeneği ile:

C kaynak dosyalarının dizin yapısını yeniden oluşturur ve işlevi depolar
".js" sonekiyle ilgili C dosyalarındaki bildirimler. Eğer böyle bir dosya
verilen boyutu aşarsa, ".partxxx.js" sonekine sahip dosyalar oluşturulur. Ana
dosya temel dizinde bulunur ve ".js" son ekine sahiptir.

--bağlamak C/C++'ı birbirine bağlayan "embind" bağlama yaklaşımını kullanarak kaynak kodunu derler
ve JS.

--ignore-dinamik-bağlama Normalde emcc, dinamik bağlantıya şu şekilde davranır:
Dinamik kitaplıktan kodda bağlantı kurarak statik bağlantı. Bu başarısız olursa
aynı dinamik kitaplık birden çok kez bağlantılıdır. Bu seçenek ile dinamik bağlantı
yoksayılır, bu da derleme sisteminin hatasız ilerlemesini sağlar. Sen yine de
daha sonra kendiniz paylaşılan kitaplıklara manuel olarak bağlanmanız gerekecektir.

--kabuk dosyası
HTML çıktısı oluşturulurken kullanılan bir iskelet HTML dosyasının yol adı. Deniz kabuğu
kullanılan dosyanın içinde şu belirtecin olması gerekir: {{{ SCRIPT_CODE }}} Bunun
kullanılarak HTML dışında bir hedef belirtilirse, argüman yoksayılır. -o seçeneği.

--js-kütüphane
Emscripten'in src/library_* dosyasındakilere ek olarak kullanılacak bir JavaScript kitaplığı

-v Ayrıntılı çıktıyı açar. Bu geçecek -v Clang'a ve ayrıca EMCC_DEBUG'a
ayrıntılar emcc'nin işlemleri

--jcache
Bir JavaScript önbelleği kullanın. Bu, varsayılan olarak devre dışıdır. Etkinleştirildiğinde, emcc depolayacak
bir önbellekte derleme sonuçları ve daha sonra derleme yaparken önbelleği kontrol edin,
ccache'nin yaptığı gibi bir şey. Bu, artımlı yapılara izin verir - nerede olursanız olun
büyük bir programı derlemek, ancak yalnızca küçük bir bölümünü değiştirmek - çok daha hızlı olmak için
(önbellek erişimleri için daha fazla disk GÇ'si pahasına). etkinleştirmeniz gerektiğini unutmayın.
--jcache verilerin hem yüklenmesi hem de kaydedilmesi için, bu nedenle tam bir derlemede etkinleştirmelisiniz
daha sonraki bir artımlı yapı için (burada da etkinleştirirsiniz) hızlandırılacak.

Önbelleğe alma, derlemenin 4 bölümünde ayrı ayrı çalışır: türler ve genel olan 'pre'
değişkenler; bu bilgi daha sonra işlevler olan 'işlevlere' beslenir (ki
paralel hale getiriyoruz) ve ardından son bilgileri ekleyen 'gönder'
(örneğin, long64 destek koduna ihtiyacımız var mı). Son olarak, 'jsfuncs'
JavaScript düzeyinde optimizasyonlar. 4 parçanın her biri ayrı ayrı önbelleğe alınabilir, ancak
birbirlerini etkileyebileceklerini unutmayın: Tek bir C++ dosyasını yeniden derlerseniz,
global bir değişkeni değiştirir - örneğin, global bir değişkeni ekler, kaldırır veya değiştirir, diyelim ki
printf ekleyerek veya derleme zamanı zaman damgası ekleyerek 'pre' olamaz
önbellekten yüklenir. Ve 'pre'nin çıktısı 'funcs' ve 'post'a gönderildiğinden, onlar
geçersiz kılınacak ve yalnızca 'jsfuncs' önbelleğe alınacaktır. Bu yüzden değiştirmekten kaçının
globals, önbelleğe almanın tamamen çalışmasına izin verir.

Önceki paragrafta bahsedilen soruna geçici bir çözüm bulmak için şunları kullanabilirsiniz:

emscripten_jcache_printf

kodunuza hata ayıklama printfs eklerken. Bu işlev özel olarak önceden işlenmiştir, bu nedenle
ilk argümanı için global bir sabit dize oluşturmadığını. Görmek
Daha fazla ayrıntı için emscripten.h. Halihazırda bir sahip olmanız gerektiğini özellikle unutmayın.
*önce* kodunuzdaki bu işlevi çağırın ve bir artımlı yapın
build, böylece harici bir referans (ayrıca global bir özellik) eklemek,
her şeyi geçersiz kılmak.

kullanmanız gerektiğini unutmayın. -g jcache için bağlantı aşaması sırasında (bit kodundan JS'ye)
iş (aksi takdirde, JS küçültme onu karıştırabilir).

--önbelleği temizle
Derlenmiş emscripten sistem kitaplıklarının (libc++,
libc++abi, libc). Bu normalde otomatik olarak gerçekleştirilir, ancak llvm'yi güncellerseniz
yerinde (yeni bir sürüm için farklı bir dizine sahip olmak yerine), önbelleğe alma
mekanizma karışabilir. Önbelleği temizlemek, aşağıdakilerle ilgili garip sorunları çözebilir:
Clang'ın kitaplık dosyalarıyla bağlantı kuramaması gibi önbellek uyumsuzlukları. Bu da
jcache ve önyüklenen relooper gibi diğer önbelleğe alınmış verileri temizler. Sonra
önbellek temizlenir, bu işlemden çıkılır.

--kaydet-bc PATH
JavaScript veya HTML'ye derlerken, bu seçenek bit kodunun bir kopyasını kaydeder
belirtilen yola. Bit kodu, aşağıdakiler de dahil olmak üzere bağlanan tüm dosyaları içerecektir.
standart kitaplıklar ve herhangi bir bağlantı zamanı optimizasyonundan sonra (varsa).

--memory-init-dosyası
Açıksa, ayrı bir bellek başlatma dosyası oluştururuz. Bu daha verimli
JavaScript'in içine gömülü bellek başlatma verilerini metin olarak depolamaktansa.
(varsayılan kapalıdır)

Belirtilmişse hedef dosya (-o ), neyin üretileceğini tanımlar:

.js
JavaScript

.html
Gömülü JavaScript içeren HTML

.M.Ö
LLVM bit kodu (varsayılan)


LLVM bit kodu (.bc ile aynı)

(Eğer --memory-init-dosyası .js veya .html dosyasına ek olarak kullanılır.
oluşturulur, bir .mem dosyası da görünür.)

The -c seçeneği (gcc'ye bağlayıcıyı çalıştırmamasını söyler) LLVM bit kodunun
emcc JavaScript'i yalnızca oluşturmanın son bağlantı aşamasında oluşturduğundan oluşturulur.

Girdi dosyaları, Clang'ın işleyebileceği kaynak kod dosyaları (C veya C++), LLVM olabilir.
ikili biçimde bit kodu veya insan tarafından okunabilir biçimde LLVM derleme dosyaları.

emcc, çeşitli ortam değişkenlerinden etkilenir. Ayrıntılar için emcc kaynağını görüntüleyin
('os.environ' için arama yapın).

emcc: desteklenen hedefler: llvm bitcode, javascript, NOT elf (autoconf, elf'i görmeyi sever
paylaşılan nesne desteğini etkinleştirmek için yukarıda)

TELİF HAKKI


Telif hakkı © 2013 Emscripten yazarları (bkz. AUTHORS.txt) Bu ücretsiz ve açık kaynaktır
MIT lisansı altında yazılım. HİÇBİR garanti yoktur; SATILABİLİRLİK için bile veya
BELİRLİ BİR AMACA UYGUNLUK.

onworks.net hizmetlerini kullanarak emcc'yi çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

Linux komutları

Ad