InggrisPerancisSpanyol

Ad


favorit OnWorks

emcc - Online di Cloud

Jalankan emcc di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

Ini adalah perintah emcc yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


emcc - frontend kompiler Emscripten

DESKRIPSI


emcc [opsi] file...

jembatan normal gcc/g++ Pilihan akan kerja, untuk contoh:
--membantu Tampilkan informasi ini

--Versi: kapan
Tampilkan informasi versi kompiler

Opsi bahwa adalah dimodifikasi or yang baru in dll meliputi:
-O0 Tidak ada pengoptimalan (default)

-O1 Pengoptimalan sederhana, termasuk asm.js, LLVM -O1 optimasi, dan tidak ada runtime
pernyataan atau penangkapan pengecualian C++ (untuk mengaktifkan kembali penangkapan pengecualian C++, gunakan -s
DISABLE_EXCEPTION_CATCHING=0 ). (Untuk detail tentang pengaruh dari pilihan yang berbeda
level, lihat apply_opt_level() di tools/shared.py dan juga src/settings.js.) Catatan:
Pengoptimalan hanya dilakukan saat kompilasi ke JavaScript, bukan ke perantara
bitcode, *kecuali* Anda membangun dengan EMCC_OPTIMIZE_NORMALLY=1 (tidak disarankan kecuali
Anda tahu apa yang Anda lakukan!)

-O2 As -O1, ditambah relooper (rekreasi loop), LLVM -O2 optimasi, dan

-s ALIASING_FUNCTION_POINTERS=1

-O3 As -O2, ditambah pengoptimalan berbahaya yang dapat merusak kode yang dihasilkan! Ini menambahkan

-s FORCE_ALIGNED_MEMORY=1 -s GANDA_MODE=0 -s PRECISE_I64_MATH=0 --penutupan 1
--llvm-lto 1

Ini tidak direkomendasikan sama sekali. Ide yang lebih baik adalah mencoba masing-masing secara terpisah di
atas -O2 untuk melihat apa yang berhasil. Lihat wiki dan src/settings.js (untuk -s pilihan)
for more information.

-s OPSI = NILAI
Opsi pembuatan kode JavaScript diteruskan ke kompiler emscripten. Untuk
opsi yang tersedia, lihat src/settings.js Perhatikan bahwa untuk opsi yang berupa daftar, Anda
perlu tanda kutip di sebagian besar shell, misalnya

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

or

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

(tanpa "s eksternal di salah satu dari itu, Anda akan mendapatkan kesalahan)

Anda juga dapat menentukan file dari mana nilai akan dibaca, misalnya,

-s DEAD_FUNCTIONS=@/path/ke/file

Isi dari /path/ke/file akan dibaca, JSON.parsing dan diatur ke DEAD_FUNCTIONS
(sehingga file tersebut dapat berisi

["_fungsi1", "fungsi2"]

). Perhatikan bahwa jalur harus absolut, bukan relatif.

-g Gunakan informasi debug. Perhatikan bahwa Anda memerlukan ini selama fase kompilasi terakhir dari
bitcode ke JavaScript, atau kami akan menghapusnya secara default di -O1 dan di atas. Di dalam
-O0, nomor baris akan ditampilkan dalam kode yang dihasilkan. Di dalam -O1 dan di atas,
pengoptimal menghapus komentar tersebut. Namun bendera ini memiliki efek
menonaktifkan apa pun yang menyebabkan kerusakan nama atau pengecilan nama (penutupan atau
mendaftar lulus).

--typed-array
0: Tidak ada array yang diketik 1: Array yang diketik paralel 2: Array yang diketik bersama (seperti C)
(Default)

--llvm-opts
0: Tidak ada pengoptimalan LLVM (default di -O0) 1: -O1 Pengoptimalan LLVM (default di
-O1) 2: -O2 Pengoptimalan LLVM 3: -O3 Pengoptimalan LLVM (default di -O2+)

--llvm-lto
0: Tidak ada LLVM LTO (default di -O2 dan di bawah) 1: LLVM LTO (default di -O3) Catatan: Jika
Pengoptimalan LLVM tidak dijalankan (lihat --llvm-opts), pengaturan ini ke 1 tidak berpengaruh.

--penutupan
0: Tidak ada kompiler penutup (default dalam -O2 dan di bawah) 1: Jalankan kompiler penutupan. Ini
sangat mengurangi ukuran kode dan mungkin dalam beberapa kasus meningkatkan kecepatan runtime (walaupun
sebaliknya juga dapat terjadi). Perhatikan bahwa dibutuhkan waktu untuk menjalankan, dan mungkin memerlukan beberapa
perubahan pada kode. Ini dijalankan secara default di -O3.

Dalam mode asm.js, penutupan hanya akan digunakan pada kode 'shell' di sekitar yang dikompilasi
kode (kode yang dikompilasi akan diproses oleh minifier asm.js khusus).

Catatan: Jika kompiler penutup kehabisan memori, coba sesuaikan JAVA_HEAP_SIZE di
lingkungan (misalnya, untuk 4096m untuk 4GB).

--js-transformasi
akan dipanggil pada kode yang dihasilkan sebelum dioptimalkan. Ini memungkinkan Anda
memodifikasi JavaScript, misalnya menambahkan beberapa kode atau menghapus beberapa kode, dengan cara
bahwa modifikasi tersebut akan dioptimalkan bersama dengan kode yang dihasilkan
dengan baik. akan dipanggil dengan nama file dari kode yang dihasilkan sebagai
parameter; untuk memodifikasi kode, Anda dapat membaca data asli dan kemudian menambahkannya
atau menimpanya dengan data yang dimodifikasi. ditafsirkan sebagai ruang-dipisahkan
daftar argumen, misalnya, dari "python processor.py" akan menyebabkan python
skrip yang akan dijalankan.

--pra-js
File yang isinya ditambahkan sebelum kode yang dihasilkan. Ini dilakukan *sebelum*
optimasi, sehingga akan diperkecil dengan benar jika kompiler penutupan dijalankan.

--post-js
File yang isinya ditambahkan setelah kode yang dihasilkan Ini dilakukan *sebelum*
optimasi, sehingga akan diperkecil dengan benar jika kompiler penutupan dijalankan.

--sematkan-file
File untuk disematkan di dalam JavaScript yang dihasilkan. Kode yang dikompilasi akan dapat
akses file di direktori saat ini dengan nama yang sama seperti yang diberikan di sini. Jadi jika
kamu lakukan --sematkan-file dir/file.dat, maka (1) dir/file.dat harus ada relatif terhadap
tempat Anda menjalankan emcc, dan (2) kode terkompilasi Anda akan dapat menemukan file dengan
membaca jalur yang sama, dir/file.dat. Jika sebuah direktori dilewatkan di sini, keseluruhannya
konten akan disematkan.

--pramuat-file
File untuk dimuat sebelum menjalankan kode yang dikompilasi secara asinkron. Sebaliknya
mirip dengan --sematkan-file, kecuali bahwa opsi ini hanya relevan saat menghasilkan
HTML (menggunakan XHR biner asinkron), atau JS yang akan digunakan di halaman web. Jika
sebuah direktori dilewatkan di sini, seluruh isinya akan dimuat sebelumnya. File yang dimuat sebelumnya
disimpan di filename.data, di mana filename.html adalah file utama yang Anda kompilasi
ke. Untuk menjalankan kode, Anda memerlukan .html dan .data.

emcc menjalankan tools/file_packager.py untuk melakukan pengemasan aktual dari embedded dan
file yang dimuat sebelumnya. Anda dapat menjalankan file packager sendiri jika Anda mau, lihat dokumen
di dalam file itu. Anda kemudian harus meletakkan output dari file packager di emcc
--pra-js, sehingga dijalankan sebelum kode kompilasi utama Anda (atau jalankan sebelum di
beberapa cara lain).

--kompresi
Kompres kode yang dikompilasi dan file yang disematkan/dimuat sebelumnya. harus menjadi
tiga kali lipat,

, ,

di mana native_encoder adalah executable asli yang mengompresi stdin ke stdout (the
antarmuka sesederhana mungkin), js_decoder adalah file JavaScript yang mengimplementasikan a
dekoder, dan js_name adalah nama fungsi yang dipanggil dalam file dekoder (yang
harus menerima array/array yang diketik dan mengembalikan array/array yang diketik. Kompresi
hanya berfungsi saat membuat HTML. Saat kompresi aktif, semua yang diajukan ditentukan menjadi
dimuat sebelumnya dikompresi dalam satu arsip besar, yang diberi nama yang sama dengan
keluaran HTML tetapi dengan akhiran .data.compress

--mengecilkan
0: Jangan mengecilkan spasi putih JavaScript yang dihasilkan (default di -O0, -O1, atau jika
-g digunakan)

1: Perkecil JavaScript yang dihasilkan

spasi putih (default dalam -O2+, dengan asumsi -g tidak digunakan)

--membelah
Membagi file javascript yang dihasilkan menjadi beberapa bagian untuk memudahkan debugging. Pilihan ini
hanya berfungsi jika Javascript dibuat (target -o .js). File dengan fungsi
deklarasi harus dimuat sebelum file utama saat dieksekusi.

Tanpa opsi "-g":

Membuat file dengan deklarasi fungsi hingga ukuran tertentu dengan akhiran
"_functions.partxxx.js" dan file utama dengan akhiran ".js".

Dengan opsi "-g":

Membuat ulang struktur direktori dari file sumber C dan menyimpan fungsi
deklarasi dalam file C masing-masing dengan akhiran ".js". Jika file seperti itu
melebihi ukuran yang diberikan, file dengan akhiran ".partxxx.js" akan dibuat. utama
file berada di direktori dasar dan memiliki akhiran ".js".

--mengikat Mengkompilasi kode sumber menggunakan pendekatan binding "embind", yang menghubungkan C/C++
dan JS.

--abaikan-tautan dinamis Biasanya emcc akan memperlakukan penautan dinamis seperti
penautan statis, dengan menautkan kode dari pustaka dinamis. Ini gagal jika
perpustakaan dinamis yang sama ditautkan lebih dari sekali. Dengan opsi ini, penautan dinamis
diabaikan, yang memungkinkan sistem pembangunan untuk melanjutkan tanpa kesalahan. Namun, kamu
Anda perlu menautkan secara manual ke perpustakaan bersama nanti.

--file-shell
Nama jalur ke file HTML kerangka yang digunakan saat menghasilkan keluaran HTML. Kerang
file yang digunakan harus memiliki token ini di dalamnya: {{{ SCRIPT_CODE }}} Perhatikan bahwa ini
argumen diabaikan jika target selain HTML ditentukan menggunakan -o .

--js-perpustakaan
Pustaka JavaScript untuk digunakan selain yang ada di src/library_* Emscripten

-v Mengaktifkan keluaran verbose. Ini akan berlalu -v ke Dentang, dan juga aktifkan EMCC_DEBUG untuk
detail operasi emcc

--jcache
Gunakan cache JavaScript. Ini dinonaktifkan secara default. Saat diaktifkan, emcc akan menyimpan
hasil kompilasi dalam cache dan periksa cache saat kompilasi nanti,
sesuatu seperti apa yang dilakukan ccache. Ini memungkinkan pembangunan tambahan - di mana Anda berada
mengkompilasi program besar tetapi hanya memodifikasi sebagian kecil - menjadi jauh lebih cepat
(dengan biaya lebih banyak IO disk untuk akses cache). Perhatikan bahwa Anda harus mengaktifkan
--jcache untuk memuat dan menyimpan data, jadi Anda harus mengaktifkannya di build penuh
untuk pembangunan inkremental nanti (di mana Anda juga mengaktifkannya) untuk dipercepat.

Caching bekerja secara terpisah pada 4 bagian kompilasi: 'pra' yang merupakan tipe dan global
variabel; informasi itu kemudian dimasukkan ke dalam 'fungsi' yang merupakan fungsi (yang
kami memparalelkan), dan kemudian 'posting' yang menambahkan informasi akhir berdasarkan
fungsi (misalnya, apakah kita memerlukan kode dukungan long64). Akhirnya, 'jsfuncs' adalah
Pengoptimalan tingkat JavaScript. Masing-masing dari 4 bagian dapat di-cache secara terpisah, tetapi
perhatikan bahwa mereka dapat saling mempengaruhi: Jika Anda mengkompilasi ulang satu file C++ yang
mengubah variabel global - misalnya, menambah, menghapus, atau memodifikasi variabel global, katakanlah
dengan menambahkan printf atau dengan menambahkan stempel waktu kompilasi, maka 'pra' tidak dapat
dimuat dari cache. Dan karena output 'pra dikirim ke 'fungsi' dan 'posting', mereka
akan dibatalkan juga, dan hanya 'jsfuncs' yang akan di-cache. Jadi hindari memodifikasi
global untuk membiarkan caching bekerja sepenuhnya.

Untuk mengatasi masalah yang disebutkan di paragraf sebelumnya, Anda dapat menggunakan

emscripten_jcache_printf

saat menambahkan debug printfs ke kode Anda. Fungsi itu diproses secara khusus jadi
bahwa itu tidak membuat string global konstan untuk argumen pertamanya. Lihat
emscripten.h untuk lebih jelasnya. Perhatikan secara khusus bahwa Anda harus sudah memiliki
panggil fungsi itu dalam kode Anda *sebelum* Anda menambahkannya dan melakukan inkremental
build, sehingga menambahkan referensi eksternal (juga properti global) tidak
membatalkan semuanya.

Perhatikan bahwa Anda harus menggunakan -g selama tahap penautan (bitcode ke JS), untuk jcache ke
bekerja (jika tidak, minifikasi JS dapat membingungkannya).

--hapus-cache
Secara manual mengosongkan cache dari pustaka sistem emscripten yang dikompilasi (libc++,
libc++abi, libc). Ini biasanya ditangani secara otomatis, tetapi jika Anda memperbarui llvm
di tempat (alih-alih memiliki direktori berbeda untuk versi baru), caching
mekanisme bisa membingungkan. Menghapus cache dapat memperbaiki masalah aneh yang terkait dengan
ketidakcocokan cache, seperti dentang yang gagal ditautkan dengan file perpustakaan. Ini juga
membersihkan data cache lainnya seperti jcache dan relooper bootstrap. Setelah
cache dibersihkan, proses ini akan keluar.

--simpan-bc PATH
Saat mengkompilasi ke JavaScript atau HTML, opsi ini akan menyimpan salinan bitcode
ke jalur yang ditentukan. Bitcode akan mencakup semua file yang ditautkan, termasuk
pustaka standar, dan setelah pengoptimalan waktu tautan (jika ada).

--memori-init-file
Jika aktif, kami membuat file inisialisasi memori terpisah. Ini lebih efisien
daripada menyimpan data inisialisasi memori yang disematkan di dalam JavaScript sebagai teks.
(default mati)

File target, jika ditentukan (-o ), mendefinisikan apa yang akan dihasilkan:

.js
JavaScript

.html
HTML dengan JavaScript tertanam

.bc
Kode bit LLVM (default)

.Hai
LLVM bitcode (sama seperti .bc)

(Perhatikan bahwa jika --memori-init-file digunakan, maka selain file .js atau .html yang
dihasilkan, file .mem juga akan muncul.)

Grafik -c opsi (yang memberi tahu gcc untuk tidak menjalankan tautan) akan menyebabkan bitcode LLVM menjadi
dihasilkan, karena emcc hanya menghasilkan JavaScript pada tahap akhir pembuatan tautan.

File input dapat berupa file kode sumber yang dapat ditangani oleh Clang (C atau C++), LLVM
bitcode dalam bentuk biner, atau file rakitan LLVM dalam bentuk yang dapat dibaca manusia.

emcc dipengaruhi oleh beberapa variabel lingkungan. Untuk detailnya, lihat sumber emcc
(cari 'os.environ').

emcc: target yang didukung: llvm bitcode, javascript, BUKAN elf (autoconf suka melihat elf
di atas untuk mengaktifkan dukungan objek bersama)

HAK CIPTA


Hak Cipta © 2013 penulis Emscripten (lihat AUTHORS.txt) Ini gratis dan open source
perangkat lunak di bawah lisensi MIT. TIDAK ADA garansi; bahkan bukan untuk DIPERDAGANGKAN atau
KESESUAIAN UNTUK TUJUAN TERTENTU.

Gunakan emcc online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

Perintah Linux

Ad