คุณสามารถดูเพิ่มเติมได้ใน " การตั้งค่าและใช้งาน gccgo ":
gccgo คอมไพเลอร์สำหรับภาษา Go คอมไพเลอร์ gccgo เป็นส่วนหน้าใหม่สำหรับ GCC
โปรดทราบว่า gccgo ไม่ใช่คอมไพเลอร์ gc
ตามที่อธิบายไว้ใน " Gccgo in GCC 4.7.1 " (กรกฎาคม 2555)
ภาษา Go ถูกกำหนดโดยข้อมูลจำเพาะเสมอไม่ใช่การใช้งาน ทีม Go ได้เขียนคอมไพเลอร์ที่แตกต่างกันสองตัวที่ใช้ข้อมูลจำเพาะนั้น: gc และ gccgo
- Gc เป็นคอมไพเลอร์ดั้งเดิมและเครื่องมือ go ใช้โดยค่าเริ่มต้น
- Gccgo เป็นการใช้งานที่แตกต่างกันโดยมีจุดเน้นที่แตกต่างกัน
เมื่อเทียบกับ gc แล้ว gccgo จะคอมไพล์โค้ดได้ช้ากว่า แต่รองรับการเพิ่มประสิทธิภาพที่มีประสิทธิภาพมากกว่าดังนั้นโปรแกรมที่เชื่อมต่อกับ CPU ที่สร้างโดย gccgo มักจะทำงานได้เร็วกว่า
นอกจากนี้:
- คอมไพเลอร์ gc รองรับเฉพาะโปรเซสเซอร์ยอดนิยม: x86 (32 บิตและ 64 บิต) และ ARM
- อย่างไรก็ตาม Gccgo รองรับโปรเซสเซอร์ทั้งหมดที่ GCC รองรับ
โปรเซสเซอร์เหล่านี้บางตัวไม่ได้รับการทดสอบอย่างละเอียดสำหรับ gccgo แต่มีหลายตัวเช่น x86 (32 บิตและ 64 บิต), SPARC, MIPS, PowerPC และแม้แต่ Alpha
Gccgo ยังได้รับการทดสอบบนระบบปฏิบัติการที่คอมไพเลอร์ gc ไม่รองรับโดยเฉพาะอย่างยิ่ง Solaris
หากคุณติดตั้งคำสั่งไปจากการเปิดตัวไปมาตรฐานแล้วมันสนับสนุน gccgo ผ่านทางตัวเลือก:-compiler
go build -compiler gccgo myprog
ในระยะสั้น: gccgo: การเพิ่มประสิทธิภาพมากขึ้น, การประมวลผลมากขึ้น
อย่างไรก็ตามตามความคิดเห็นของOneOfOne ( แหล่งที่มา ) มักจะมีการซิงโครไนซ์ระหว่าง go ที่สนับสนุนโดย gccgo และ go รุ่นล่าสุด:
gccgo รองรับเฉพาะเวอร์ชัน go v1.2ดังนั้นหากคุณต้องการอะไรใหม่ ๆ ใน 1.3 / 1.4 (tip) gccgo ไม่สามารถใช้งานได้ -
GCC ปล่อย 4.9จะมีการไป 1.2 (ไม่ 1.3) รุ่น gccgo
กำหนดการเผยแพร่สำหรับโครงการ GCC และ Go ไม่ตรงกันซึ่งหมายความว่า 1.3 จะพร้อมใช้งานในสาขาการพัฒนา แต่ GCC รุ่นถัดไป 4.10 มีแนวโน้มที่จะมี gccgo เวอร์ชัน Go 1.4
twotwotwoกล่าวถึงในความคิดเห็นภาพนิ่งของงานนำเสนอแบรดฟิทซ์
gccgo สร้างรหัสที่ดีมาก
... แต่ขาดการวิเคราะห์การหลบหนี: ฆ่าประสิทธิภาพด้วยการจัดสรรขนาดเล็กจำนวนมาก + ขยะ
... GC ไม่แม่นยำ ไม่ดีสำหรับ 32 บิต
twotwotwo เพิ่ม:
อีกสไลด์กล่าวว่าการสร้างรหัส ARM ที่ไม่ใช่ gccgo นั้นไม่เป็นระเบียบ
สมมติว่าเป็นตัวเลือกที่น่าสนใจสำหรับโครงการของคุณอาจเปรียบเทียบไบนารีสำหรับกรณีการใช้งานของคุณกับสถาปัตยกรรมเป้าหมายของคุณ
ในฐานะที่เป็นpeterSO ความคิดเห็น , Go 1.5ในขณะนี้ (Q3 / Q4 2015) หมายถึง:
ขณะนี้คอมไพเลอร์และรันไทม์ถูกเขียนทั้งหมดใน Go (โดยมีแอสเซมเบลอร์เล็กน้อย)
C ไม่ได้มีส่วนร่วมในการดำเนินงานและเพื่อให้คอมไพเลอร์ C ที่ครั้งหนึ่งเคยเป็นสิ่งที่จำเป็นสำหรับการสร้างการกระจายหายไป
สไลด์ "Go in Go"กล่าวถึง:
C หายไปแล้ว
หมายเหตุด้านข้าง: gccgo ยังคงแข็งแกร่ง
Berkantถามว่าในความคิดเห็นที่ถ้าgccgo
เป็นสิ่งที่gc
ได้รับจาก bootstrapped
Jörg W Mittagตอบ:
ไม่ปรากฏขึ้นหลังจากgccgo
gc
gc
เดิมเขียนด้วยภาษา C โดยอ้างอิงจากคอมไพเลอร์ C ของ Ken Thompson จากระบบปฏิบัติการ Plan9ซึ่งเป็นตัวต่อจาก Unix ซึ่งออกแบบโดยคนกลุ่มเดียวกัน gc
ได้รับการปรับโครงสร้างซ้ำเพื่อให้มีการเขียนตัวเองมากขึ้นเรื่อย ๆ ใน Go
gccgo
เริ่มต้นโดยIan Lance Taylorแฮ็กเกอร์ GCC ที่ไม่มีส่วนเกี่ยวข้องกับโครงการ Go
โปรดทราบว่าคอมไพเลอร์ Go ที่โฮสต์ด้วยตัวเองตัวแรกนั้นเป็นการนำไปใช้งานแบบปิดที่เป็นกรรมสิทธิ์ทางการค้าสำหรับ Windows ซึ่งดูเหมือนว่าชื่อจะหายไปจากสมองของฉันแบบเดียวกับที่ทำจากอินเทอร์เน็ต พวกเขาอ้างว่ามีคอมไพเลอร์ที่โฮสต์ด้วยตัวเองที่เขียนใน Go โดยกำหนดเป้าหมายไปที่ Windows ในเวลาที่gccgo
ยังไม่มีอยู่จริงและgc
เจ็บปวดอย่างมากในการตั้งค่าบน Windows (โดยทั่วไปคุณต้องตั้งค่าสภาพแวดล้อม Cygwin เต็มรูปแบบแก้ไขซอร์สโค้ดและคอมไพล์จากแหล่งที่มา) บริษัท ดูเหมือนจะพับไปก่อนที่พวกเขาจะจัดการเพื่อทำการตลาดผลิตภัณฑ์
Hector Chuได้เปิดตัวพอร์ต Windows ของ Go ในเดือนพฤศจิกายน 2009
และgo-lang.cat-v.org/os-ports
เพจดังกล่าวกล่าวถึงงานเริ่มต้นของJoe / Joseph Poirierด้วย ในหน้านี้ :
มีโอกาสใดที่ใครบางคนในความรู้สามารถขอให้คนใดคนหนึ่ง ( Alex Brainman - Hector Chu - Joseph Poirier) ที่เกี่ยวข้องกับการผลิตพอร์ต Windows สามารถสร้างรายการวิกิที่มีรายละเอียดสภาพแวดล้อมการสร้างของพวกเขาได้หรือไม่?
เพิ่มไปที่ (ในการเขียน Web Apps ใน Go ) !光京(Wei GuangJing)