ชุดแปลโปรแกรมของกนู (อังกฤษ: GNU Compiler Collection) หรือเรียกโดยย่อว่า จีซีซี (อังกฤษ: GCC) เป็นชุดโปรแกรมแปลโปรแกรมสำหรับแปลภาษาโปรแกรมต่าง ๆ พัฒนาโดยโครงการกนู (GNU) และแจกจ่ายเป็นซอฟต์แวร์เสรีภายใต้สัญญาอนุญาตแบบ GPL และ LGPL โดยชุด GCC ถือว่าเป็นชุดคอมไพเลอร์มาตรฐานในระบบปฏิบัติการแบบยูนิกซ์ อย่างเช่น ลินุกซ์ หรือ Mac OS X เป็นต้น
Screenshot of GCC 10.2 compiling its own source code | |
ผู้ออกแบบ | Richard Stallman |
---|---|
นักพัฒนา | |
วันที่เปิดตัว | 22 มีนาคม 1987 |
รุ่นเสถียร | 14.1 / 7 พฤษภาคม 2024 |
ที่เก็บข้อมูล |
|
ภาษาที่เขียน | C, |
ระบบปฏิบัติการ | Cross-platform |
GNU and many others | |
~15 million | |
ภาษา | English |
ประเภท | Compiler |
สัญญาอนุญาต | GPLv3+ with GCC Runtime Library Exception |
เว็บไซต์ | gcc |
ชื่อเดิมของ GCC คือ GNU C Compiler เนื่องจากในระยะแรกถูกพัฒนาขึ้นเป็นคอมไพเลอร์ของภาษาซีเท่านั้น แต่ในภายหลังเมื่อได้พัฒนาให้สนับสนุนภาษาโปรแกรมอื่นๆ มากขึ้น จึงเปลี่ยนชื่อเพื่อให้สื่อครอบคลุมความหมายมากกว่าเดิม
ภาพรวม
GCC เริ่มพัฒนาใน ค.ศ. 1985 โดยริชาร์ด สตอลแมน ซึ่งเขาเริ่มจากการแปลงคอมไพเลอร์ของภาษา Pastel (ส่วนขยายของภาษาปาสกาล) ให้ใช้กับภาษาซีได้ GCC ถูกเขียนขึ้นมาใหม่อีกครั้งโดยใช้ภาษาซีทั้งหมด เพื่อเป็นคอมไพเลอร์สำหรับภาษาซีและเป็นส่วนสำคัญของโครงการกนูในยุคแรก ซึ่งทิศทางการพัฒนากำหนดโดย Free Software Foundation
ใน ค.ศ. 1997 กลุ่มนักพัฒนา GCC จำนวนหนึ่งไม่พอใจการพัฒนาของ GCC สายหลักที่ล่าช้า จึงแยกตัวออกมาพัฒนา EGCS (Experimental/Enhanced GNU Compiler System) ทำให้การพัฒนาเกิดขึ้นรวดเร็วกว่า GCC เดิมมาก ในปี ค.ศ. 1999 EGCS กลายมาเป็น GCC เวอร์ชันหลักแทน GCC เก่าในท้ายที่สุด
นอกจากจะเป็นคอมไพเลอร์มาตรฐานบนระบบปฏิบัติการแบบยูนิกซ์แล้ว GCC ยังถูกนำมาแปลงให้ใช้ได้บนระบบปฏิบัติการอื่นๆ เช่น และ Mac OS X รวมถึงระบบฝังตัวอื่นๆ เช่น Symbian, PlayStation และ Dreamcast เป็นต้น
ภาษาโปรแกรมที่สนับสนุน
ในชุดคอมไพเลอร์มาตรฐานเวอร์ชัน 4.3 สนับสนุนภาษาโปรแกรมดังต่อไปนี้
นอกจากนี้ยังสนับสนุนภาษาโปรแกรมอื่นๆ เพิ่มเติม แต่ไม่ได้รวมอยู่ในชุดคอมไพเลอร์มาตรฐาน
สถาปัตยกรรมคอมพิวเตอร์ที่สนับสนุน
โพรเซสเซอร์ที่สนับสนุนโดย GCC รุ่น 4.3 ได้แก่
โพรเซสเซอร์อื่นที่สนับสนุนได้แก่:
โพรเซสเซอร์อื่นที่สนับสนุนโดย GCC แต่การพัฒนาและบำรุงรักษา แยกจากรุ่นของ FSF:
- และ
- (Motorola 68000 variation)
โครงสร้างการทำงาน
GCC ทำงานโดยใช้บรรทัดคำสั่ง ผู้ใช้มักเรียกโปรแกรมโดยการเรียกโปรแกรมที่ชื่อ gcc
พร้อมทั้งใส่ตัวเลือกต่างๆ ทางพารามิเตอร์ในบรรทัดคำสั่ง โปรแกรมนี้จะวิเคราะห์ภาษาที่ใช้จากนามสกุลของไฟล์ แล้วเรียก, คอมไพเลอร์, และ ลิงเกอร์ มาทำงานตามลำดับ แต่ผู้ใช้สามารถสั่งให้ทำงานเฉพาะบางขั้นตอนข้างบนจากพารามิเตอร์ได้
พรีโพรเซสเซอร์ ที่ใช้เป็นโปรแกรมหนึ่งใน GCC มีชื่อว่า cpp
เรียกใช้ก็ต่อเมื่อจะคอมไพล์โปรแกรมที่เขียนในบางภาษา เช่น C หรือ C++ เป็นต้น
ใน GCC แยกคอมไพเลอร์แต่ละภาษาออกเป็นคนละโปรแกรม ตัวอย่างเช่น คอมไพเลอร์ภาษา C จะเป็นโปรแกรมที่ชื่อ cc1
โครงสร้างภายในคอมไพเลอร์แต่ละภาษาแบ่งเป็นสามส่วนเหมือนกัน ได้แก่ ฟรอนต์เอ็นด์ (frontend) มิดเดิลเอ็นด์ (middle-end) และ แบ็คเอ็นด์ (backend)
- ฟรอนต์เอ็นด์ ทำหน้าที่อ่านไฟล์ที่ผ่านการประมวลผล พรีโพรเซสเซอร์ แล้วตีความหมาย ตรวจสอบหาข้อผิดพลาด และสร้างโครงสร้างข้อมูลที่ชื่อ GENERIC ซึ่งมีรูปแบบ (AST) ฟรอนต์เอ็นด์นี้เป็นส่วนของคอมไพเลอร์ที่ขึ้นกับภาษา
- มิดเดิลเอ็นด์ ทำหน้าที่แปลง GENERIC เป็นอีกโครงสร้างหนึ่งที่ชื่อ GIMPLE ซึ่งลดรูปโครงสร้างต่างๆ เช่น ลูป for, while ให้เหลือเพียง if และ goto แล้วแปลงเข้ารูปแบบ (SSA) สุดท้ายสร้างโครงสร้างข้อมูลที่ชื่อ Register Transfer Language (RTL) ซึ่งในแต่ละขั้นตอนการแปลข้างบน ก็มีการทำ ออพติไมซ์ (optimize) เพื่อให้โปรแกรมที่ได้ทำงานเร็วขึ้น ส่วนนี้ของคอมไพเลอร์ไม่ขึ้นกับภาษาหรือสถาปัตยกรรมที่ใช้
- แบ็คเอ็นด์ แปลง RTL ไปเป็นโปรแกรมภาษาแอสเซมบลี ส่วนนี้ขึ้นกับสถาปัตยกรรมที่จะคอมไพล์
ส่วน แอสเซมเบลอร์ และ ลิงเกอร์ นั้นไม่รวมอยู่ในชุดโปรแกรม GCC ในระบบกนูโปรแกรมทั้งสองจะอยู่ในอีกชุดโปรแกรมหนึ่ง คือ แอสเซมเบลอร์ ทำหน้าที่แปลภาษาแอสเซมบลี เป็นภาษาเครื่อง ในขณะที่ ลิงเกอร์ ทำหน้าที่รวมไฟล์ภาษาเครื่อง ซึ่งอาจมีหลายไฟล์ และไลบรารีเข้าด้วยกัน เป็นโปรแกรมที่สมบูรณ์สามารถทำงานได้
อ้างอิง
- "GCC Releases". GNU Project. สืบค้นเมื่อ July 24, 2020.
- "GCC 14.1 Released". 7 พฤษภาคม 2024. สืบค้นเมื่อ 7 พฤษภาคม 2024.
- "GCC Coding Conventions - GNU Project". gcc.gnu.org. สืบค้นเมื่อ 2022-02-07.
- Víctor Rodríguez (2019-10-01). "Cutting Edge Toolchain (Latest Features in GCC/GLIBC)". youtube.com. Linux Foundation. เก็บจากแหล่งเดิมเมื่อ 2021-11-07. สืบค้นเมื่อ 2021-01-19.
- "GCC Runtime Library Exception". สืบค้นเมื่อ July 24, 2020.
- "GCC Front Ends". สืบค้นเมื่อ 2008-05-11.
- "GCC Command Options". สืบค้นเมื่อ 2008-05-11.
- . คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2008-06-04. สืบค้นเมื่อ 2008-05-11.
- . คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2008-06-04. สืบค้นเมื่อ 2008-05-11.
แหล่งข้อมูลอื่น
- เว็บไซต์ GCC
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
chudaeplopraekrmkhxngknu xngkvs GNU Compiler Collection hruxeriykodyyxwa cisisi xngkvs GCC epnchudopraekrmaeplopraekrmsahrbaeplphasaopraekrmtang phthnaodyokhrngkarknu GNU aelaaeckcayepnsxftaewresriphayitsyyaxnuyataebb GPL aela LGPL odychud GCC thuxwaepnchudkhxmiphelxrmatrthaninrabbptibtikaraebbyuniks xyangechn linuks hrux Mac OS X epntnGNU Compiler CollectionScreenshot of GCC 10 2 compiling its own source codephuxxkaebbRichard Stallmannkphthnawnthiepidtw22 minakhm 1987 37 pikxn 1987 03 22 runesthiyr14 1 7 phvsphakhm 2024thiekbkhxmulgcc wbr gnu wbr org wbr git wbr gcc wbr gitphasathiekhiynC C rabbptibtikarCross platformGNU and many others 15 millionphasaEnglishpraephthCompilersyyaxnuyatGPLv3 with GCC Runtime Library Exceptionewbistgcc wbr gnu wbr org chuxedimkhxng GCC khux GNU C Compiler enuxngcakinrayaaerkthukphthnakhunepnkhxmiphelxrkhxngphasasiethann aetinphayhlngemuxidphthnaihsnbsnunphasaopraekrmxun makkhun cungepliynchuxephuxihsuxkhrxbkhlumkhwamhmaymakkwaedimphaphrwmGCC erimphthnain kh s 1985 odyrichard stxlaemn sungekhaerimcakkaraeplngkhxmiphelxrkhxngphasa Pastel swnkhyaykhxngphasapaskal ihichkbphasasiid GCC thukekhiynkhunmaihmxikkhrngodyichphasasithnghmd ephuxepnkhxmiphelxrsahrbphasasiaelaepnswnsakhykhxngokhrngkarknuinyukhaerk sungthisthangkarphthnakahndody Free Software Foundation in kh s 1997 klumnkphthna GCC canwnhnungimphxickarphthnakhxng GCC sayhlkthilacha cungaeyktwxxkmaphthna EGCS Experimental Enhanced GNU Compiler System thaihkarphthnaekidkhunrwderwkwa GCC edimmak inpi kh s 1999 EGCS klaymaepn GCC ewxrchnhlkaethn GCC ekainthaythisud nxkcakcaepnkhxmiphelxrmatrthanbnrabbptibtikaraebbyuniksaelw GCC yngthuknamaaeplngihichidbnrabbptibtikarxun echn aela Mac OS X rwmthungrabbfngtwxun echn Symbian PlayStation aela Dreamcast epntnphasaopraekrmthisnbsnuninchudkhxmiphelxrmatrthanewxrchn 4 3 snbsnunphasaopraekrmdngtxipni C C G cawa GCJ Ada GNAT Objective C Fortran GFortran nxkcakniyngsnbsnunphasaopraekrmxun ephimetim aetimidrwmxyuinchudkhxmiphelxrmatrthan Pascalsthaptykrrmkhxmphiwetxrthisnbsnunophressesxrthisnbsnunody GCC run 4 3 idaek x86 x86 64 PowerPC ophressesxrxunthisnbsnunidaek 68HC11 ophressesxrxunthisnbsnunody GCC aetkarphthnaaelabarungrksa aeykcakrunkhxng FSF aela Motorola 68000 variation okhrngsrangkarthanganGCC thanganodyichbrrthdkhasng phuichmkeriykopraekrmodykareriykopraekrmthichux gcc phrxmthngistweluxktang thangpharamietxrinbrrthdkhasng opraekrmnicawiekhraahphasathiichcaknamskulkhxngifl aelweriyk khxmiphelxr aela lingekxr mathangantamladb aetphuichsamarthsngihthanganechphaabangkhntxnkhangbncakpharamietxrid phriophressesxr thiichepnopraekrmhnungin GCC michuxwa cpp eriykichktxemuxcakhxmiphlopraekrmthiekhiyninbangphasa echn C hrux C epntn in GCC aeykkhxmiphelxraetlaphasaxxkepnkhnlaopraekrm twxyangechn khxmiphelxrphasa C caepnopraekrmthichux cc1 okhrngsrangphayinkhxmiphelxraetlaphasaaebngepnsamswnehmuxnkn idaek frxntexnd frontend midedilexnd middle end aela aebkhexnd backend frxntexnd thahnathixaniflthiphankarpramwlphl phriophressesxr aelwtikhwamhmay trwcsxbhakhxphidphlad aelasrangokhrngsrangkhxmulthichux GENERIC sungmirupaebb AST frxntexndniepnswnkhxngkhxmiphelxrthikhunkbphasa midedilexnd thahnathiaeplng GENERIC epnxikokhrngsranghnungthichux GIMPLE sungldrupokhrngsrangtang echn lup for while ihehluxephiyng if aela goto aelwaeplngekharupaebb SSA sudthaysrangokhrngsrangkhxmulthichux Register Transfer Language RTL sunginaetlakhntxnkaraeplkhangbn kmikartha xxphtiims optimize ephuxihopraekrmthiidthanganerwkhun swnnikhxngkhxmiphelxrimkhunkbphasahruxsthaptykrrmthiich aebkhexnd aeplng RTL ipepnopraekrmphasaaexsesmbli swnnikhunkbsthaptykrrmthicakhxmiphl swn aexsesmeblxr aela lingekxr nnimrwmxyuinchudopraekrm GCC inrabbknuopraekrmthngsxngcaxyuinxikchudopraekrmhnung khux aexsesmeblxr thahnathiaeplphasaaexsesmbli epnphasaekhruxng inkhnathi lingekxr thahnathirwmiflphasaekhruxng sungxacmihlayifl aelailbrariekhadwykn epnopraekrmthismburnsamarththanganidxangxing GCC Releases GNU Project subkhnemux July 24 2020 GCC 14 1 Released 7 phvsphakhm 2024 subkhnemux 7 phvsphakhm 2024 GCC Coding Conventions GNU Project gcc gnu org subkhnemux 2022 02 07 Victor Rodriguez 2019 10 01 Cutting Edge Toolchain Latest Features in GCC GLIBC youtube com Linux Foundation ekbcakaehlngedimemux 2021 11 07 subkhnemux 2021 01 19 GCC Runtime Library Exception subkhnemux July 24 2020 GCC Front Ends subkhnemux 2008 05 11 GCC Command Options subkhnemux 2008 05 11 khlngkhxmulekaekbcakaehlngedimemux 2008 06 04 subkhnemux 2008 05 11 khlngkhxmulekaekbcakaehlngedimemux 2008 06 04 subkhnemux 2008 05 11 aehlngkhxmulxunewbist GCCbthkhwamethkhonolyi hrux singpradisthniyngepnokhrng khunsamarthchwywikiphiediyidodykarephimetimkhxmuldk