เป็นเว็บไซต์สำรวจคอมไพเลอร์เชิงโต้ตอบ แก้ไขโค้ดใน C, C++, C#, F#, Rust, Go, D, Haskell, Swift, Pascal, ispc, Python, Java หรือส่วนประกอบภาษาอื่นๆ ที่รองรับมากกว่า 30 ภาษา และดูว่าโค้ดนั้นมีลักษณะอย่างไรหลังจากการคอมไพล์ใน เวลาจริง
รายงานข้อผิดพลาด · คำขอคอมไพเลอร์ · คำขอคุณลักษณะ · คำขอภาษา · คำขอไลบรารี · รายงานช่องโหว่
รองรับคอมไพเลอร์หลายตัวสำหรับแต่ละภาษา มีเครื่องมือและการแสดงภาพข้อมูลที่แตกต่างกันมากมาย และสามารถกำหนดค่าเค้าโครง UI ได้ (ขอบคุณ GoldenLayout)
ลองใช้ที่ godbolt.org หรือเรียกใช้อินสแตนซ์ในเครื่องของคุณเอง ภาพรวมของสิ่งที่ไซต์ช่วยให้คุณบรรลุผลได้ เหตุใดจึงมีประโยชน์ และวิธีการใช้งาน มีอยู่ที่นี่
Compiler Explorer ปฏิบัติตามหลักจรรยาบรรณซึ่งมีจุดมุ่งหมายเพื่อส่งเสริมสภาพแวดล้อมที่เปิดกว้างและเป็นมิตร
Compiler Explorer เริ่มต้นในปี 2012 เพื่อแสดงว่าโครงสร้าง C++ ถูกแปลเป็นโค้ดแอสเซมบลีอย่างไร มันเริ่มต้นเป็นเซสชัน tmux
โดยที่ vi
ทำงานในบานหน้าต่างหนึ่งและ watch gcc -S foo.cc -o -
ทำงานในบานหน้าต่างอื่น
ตั้งแต่นั้นมา ก็กลายเป็นเว็บไซต์สาธารณะที่ให้บริการการรวบรวมมากกว่า 3,000,000 รายการต่อสัปดาห์
คุณสามารถสนับสนุนโครงการนี้ทางการเงินได้ที่ Patreon, GitHub, Paypal หรือโดยการซื้ออุปกรณ์เจ๋งๆ จากร้าน Compiler Explorer
ขณะนี้มีส่วนคำถามที่พบบ่อยในวิกิพื้นที่เก็บข้อมูล หากไม่มีคำถามของคุณ โปรดติดต่อเราตามที่อธิบายไว้ด้านล่าง เพื่อให้เราสามารถช่วยเหลือคุณได้ หากคุณพบว่าคำถามที่พบบ่อยขาดประเด็นสำคัญ โปรดอย่าลังเลที่จะมีส่วนร่วมและ/หรือขอให้เราชี้แจง
วิดีโอหลายรายการแสดงคุณสมบัติบางอย่างของ Compiler Explorer:
มีแผนที่ถนนซึ่งให้ข้อมูลเชิงลึกเล็กน้อยเกี่ยวกับแผนการในอนาคตสำหรับ Compiler Explorer
Compiler Explorer เขียนด้วย TypeScript บน Node.js
สมมติว่าคุณติดตั้ง node
ที่เข้ากันได้ บน Linux เพียงแค่รัน make
ก็ควรช่วยให้คุณเริ่มต้นและรันด้วย Explorer ที่ทำงานบนพอร์ต 10240 บนเครื่องท้องถิ่นของคุณ: http://localhost:10240/ หากไม่ได้ผลสำหรับคุณ โปรดติดต่อเรา เนื่องจากเราถือว่าเป็นสิ่งสำคัญที่คุณจะสามารถดำเนินการได้อย่างรวดเร็วและง่ายดาย ปัจจุบัน Compiler Explorer จำเป็นต้องติดตั้ง node
20 บนพาธหรือที่ NODE_DIR
(ตัวแปรสภาพแวดล้อมหรือพารามิเตอร์ make
)
การรันด้วย make EXTRA_ARGS='--language LANG'
จะทำให้คุณสามารถโหลด LANG
ได้โดยเฉพาะ โดยที่ LANG
เป็นหนึ่งสำหรับรหัสภาษา/นามแฝงที่กำหนดใน lib/languages.ts
ตัวอย่างเช่น หากต้องการรัน Compiler Explorer ที่รองรับ C++ เท่านั้น คุณจะต้องเรียกใช้ make EXTRA_ARGS='--language c++'
คุณสามารถระบุอาร์กิวเมนต์ --language
ได้หลายรายการเพื่อจำกัดให้ใช้ได้มากกว่าหนึ่งภาษา Makefile
จะติดตั้งไลบรารีบุคคลที่สามทั้งหมดที่จำเป็นในการทำงานโดยอัตโนมัติ ใช้ npm
เพื่อติดตั้งส่วนประกอบฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์
สำหรับการพัฒนา เราขอแนะนำให้ใช้ make dev
เพื่อเปิดใช้งานคุณสมบัติที่มีประโยชน์บางอย่าง เช่น การโหลดซ้ำอัตโนมัติเมื่อมีการเปลี่ยนแปลงไฟล์และเวลาเริ่มต้นที่สั้นลง
คุณยังสามารถใช้ npm run dev
เพื่อรันได้หาก make dev
ไม่ทำงานบนเครื่องของคุณ
บางภาษาจำเป็นต้องมีเครื่องมือเพิ่มเติมเพื่อแยกส่วนภาษาเหล่านั้น เช่น rust
d
หรือ haskell
เครื่องมือดังกล่าวจะถูกเก็บไว้แยกต่างหากในที่เก็บเครื่องมือ
การกำหนดค่าคอมไพลเลอร์ explorer ทำได้ผ่านไฟล์การกำหนดค่าในไดเร็กทอรี etc/config
ค่าคือ key=value
ตัวเลือกในไฟล์ {type}.local.properties
(โดยที่ {type}
คือ c++
หรือคล้ายกัน) จะแทนที่ค่าใดๆ ในไฟล์ {type}.defaults.properties
มีไฟล์ .gitignore
ที่จะละเว้นไฟล์ *.local.*
ดังนั้นไฟล์เหล่านี้จะไม่ถูกตรวจสอบใน git และคุณจะไม่พบว่าตัวเองต้องต่อสู้กับเวอร์ชันที่อัปเดตเมื่อคุณ git pull
สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การเพิ่มคอมไพเลอร์
ตรวจสอบ CONTRIBUTING.md เพื่อดูข้อมูลโดยละเอียดเกี่ยวกับวิธีการมีส่วนร่วมใน Compiler Explorer และโฟลเดอร์เอกสารสำหรับรายละเอียดเฉพาะเกี่ยวกับสิ่งต่างๆ ที่คุณอาจต้องการทำ เช่น วิธีเพิ่มคอมไพเลอร์หรือภาษาใหม่ลงในไซต์
หากคุณต้องการชี้ไปที่ GCC ของคุณเองหรือไบนารีที่คล้ายกัน ให้แก้ไข etc/config/LANG.defaults.properties
หรือสร้างอันใหม่ด้วยชื่อ LANG.local.properties
โดยแทนที่ LANG
ตามต้องการ *.local.properties
มีลำดับความสำคัญสูงสุดเมื่อโหลดคุณสมบัติ
หากคุณต้องการรองรับคอมไพเลอร์หลายตัวและภาษาต่างๆ เช่น godbolt.org คุณสามารถใช้คำสั่ง bin/ce_install install compilers
ในโปรเจ็กต์ infra เพื่อติดตั้งคอมไพเลอร์ทั้งหมดหรือบางส่วนได้ คอมไพเลอร์ที่ติดตั้งในลักษณะนี้สามารถโหลดได้ผ่านการกำหนดค่าใน etc/config/*.amazon.properties
หากคุณต้องการปรับใช้ในสภาพแวดล้อมออฟไลน์โดยสมบูรณ์ คุณอาจต้องลบการกำหนดค่าบางส่วนที่ดึงมาจาก www.godbolt.ms@443
ออก
เมื่อทำงานในการตั้งค่าองค์กร บริการย่อ URL จะถูกแทนที่ด้วยบริการภายในได้ หากไดรเวอร์การจัดเก็บข้อมูลเริ่มต้นไม่เหมาะสมกับสภาพแวดล้อมของคุณ เมื่อต้องการทำเช่นนี้ ให้เพิ่มโมดูลใหม่ใน lib/shortener/myservice.js
และตั้งค่าตัวแปร urlShortenService
ในการกำหนดค่า โมดูลนี้ควรส่งออกฟังก์ชันเดียว ดูตัวอย่างโมดูล Tinyurl
มี Restful API ที่เรียบง่ายที่สามารถใช้เพื่อคอมไพล์เป็น asm และแสดงรายการคอมไพเลอร์ได้
คุณสามารถค้นหาเอกสารประกอบ API ได้ที่นี่
เราใช้ Discord ของ Compiler Explorer ซึ่งเป็นที่สำหรับหารือเกี่ยวกับการใช้หรือการพัฒนา Compiler Explorer นอกจากนี้เรายังปรากฏตัวในช่อง cpplang Slack #compiler_explorer
และเรามีรายชื่อผู้รับจดหมายสาธารณะ
มีช่องทางการพัฒนาบนความไม่ลงรอยกัน และยังมีรายชื่ออีเมลการพัฒนาอีกด้วย
อย่าลังเลที่จะแจ้งปัญหาบน GitHub หรือส่งอีเมลถึง Matt โดยตรงเพื่อขอความช่วยเหลือเพิ่มเติม
ต่อไปนี้เป็นโดเมนอย่างเป็นทางการสำหรับ Compiler Explorer:
โดเมนอนุญาตให้ใช้โดเมนย่อยได้ตามต้องการ เช่น https://foo.godbolt.org/ ซึ่งสะดวกเนื่องจากแต่ละโดเมนย่อยมีสถานะท้องถิ่นที่เป็นอิสระ นอกจากนี้ โดเมนย่อยของภาษา เช่น https://rust.compiler-explorer.com/ จะโหลดโดยเลือกภาษานั้นไว้แล้ว
Compiler Explorer ได้รับการดูแลโดยบุคคลที่ยอดเยี่ยมซึ่งมีรายชื่ออยู่ในไฟล์ AUTHORS
เราขอขอบคุณผู้มีส่วนร่วมที่มีรายชื่ออยู่ในไฟล์ CONTRIBUTORS ซึ่งมีส่วนช่วยกำหนดรูปแบบ Compiler Explorer
นอกจากนี้เรายังขอขอบคุณบุคคลเหล่านี้เป็นพิเศษสำหรับการมีส่วนร่วมกับ Compiler Explorer :
ผู้สนับสนุนที่น่าทึ่งมากมาย ทั้งบุคคลและบริษัท ได้ช่วยเหลือด้านทุนและส่งเสริม Compiler Explorer