Picolibc tugi GCC 16-s manussüsteemidele

Viimane uuendus: 19 jaanuar 2026
  • GCC 16 integreerib natiivse toe Picolibcile, mis on ülikerge libc C, mis on suunatud manussüsteemidele.
  • Integratsioon lisab sihtmärke *-picolibc-* ja uusi valikuid, näiteks --oslib=, --crt0= y --printf=.
  • Picolibc vähendab püsivara mahtu märkimisväärselt võrreldes Newlibi ja Newlib-naniga, mis on IoT ja servarakenduste jaoks võtmetähtsusega.
  • GCC 16 ühendab selle toe kaasaegsete arhitektuuride ja vaikimisi C++20 täiustustega, tugevdades oma rolli manussüsteemide ökosüsteemis.

Picolibc tugi GCC 16-s manussüsteemidele

GCC 16 tulek koos Picolibci natiivse toega tekitab manussüsteemide arendajate kogukonnas märkimisväärset elevust . See pole lihtsalt sama vana kompilaatori "veel üks versioon", vaid oluline samm palju kergemate ja täiustatud tööriistakettide suunas mikrokontrolleritele, IoT-seadmetele ja servasüsteemidele, kus iga bait loeb.

Selle sammu taga on veteraniarendaja Keith Packard, kes on tuntud oma töö poolest X.Orgis ja kes on aastaid reklaaminud Picolibci kui minimalistlikku C-standardi teeki manussüsteemidele. Pärast selle integreerimist GCC 16-ga on vajadus kohandatud paranduste, ebatavaliste konfiguratsioonide ja häkkimiste järele selle teeki linkimiseks lõpuks kadunud: Picolibcist saab GCC ökosüsteemi täieõiguslik liige.

Mis on Picolibc ja miks see on GCC 16-sse integreeritud?

Picolibc on ülikerge C-standardi teek, mis on loodud spetsiaalselt 32- ja 64-bitistele manussüsteemidele. See sündis Newlibi ja AVR Libci koondumisest ja refaktoreerimisest selge eesmärgiga: minimeerida ROM-i ja RAM-i kasutamist, ohverdamata seejuures olulisi C-keele funktsioone.

Erinevalt teistest, raskematest alternatiividest on Picolibc loodud nii, et linker saab kasutamata koodi hõlpsalt kõrvale jätta , pakkudes väga täpset kontrolli selle üle, millised teegi osad lõpuks lõplikku binaarfaili satuvad. See on ideaalne mikrokontrolleritele, kus salvestusmahtu mõõdetakse mõne kilobaidiga ja iga täiendav koodiosa lisab kulusid, ressursitarbimist ja keerukust.

Seni tähendas Picolibci kasutamine GCC-ga tööriistaketti peaaegu täielikult käsitsi loomist : teeki kompileerimist, süsteemi juurutamise kohandamist, käivitusskriptide muutmist, paranduste rakendamist jne. Tulemus oli võimas, kuid hõõrdumine heidutas paljusid meeskondi. GCC 16-ga muutub see stsenaarium radikaalselt, kuna kompilaator sisaldab selle manustatud teeki otsest ja ametlikku tuge.

Peamine on see, et GCC 16 koodipuu sisaldab vajalikke muudatusi äratundmiseks tüüpi sihtmärgid *-picolibc-* ja konfiguratsioonivalik --with-picolibcSeega kompilaatori loomisel või eelnevalt loodud tööriistariba kasutamisel Picolibc-st saab tehase toetatav valik, ilma igasuguse isetegemiseta.

Picolibc integratsioon GCC 16-s: üksikasjad ja uued valikud

GCC 16 repositooriumiga liidetud parandus mitte ainult ei lisa Picolibci tuntust alternatiivse libc-na, vaid tutvustab ka spetsiifilisi kompileerimisvalikuid, mis on loodud selle kergekaalulise keskkonna ärakasutamiseks manussüsteemides.

Ühelt poolt saab GCC nüüd sujuvalt töötada stiili sihtmärgid *-picolibc-* (näiteks arm-none-picolibc-eabiLisaks on GCC kompileerimisel võimalik edastada --with-picolibc nii et konfiguraator valmistab keskkonna ette selle teeki peamise sihtmärgina, hallates süsteemi juurõigus, päised ja alglaadimisfailid akordid Picolibcile.

Lisaks sellele põhilisele integratsioonile pakub plaaster Picolibci jaoks kompileerimisel mitmeid väga huvitavaid lisavõimalusi :

  • --oslib=See võimaldab teil valida erinevaid mooduleid, mis rakendavad liidest operatsioonisüsteemi või käituskeskkonnaga, mis on oluline, kui töötate palja metalliga. Kerge RTOS või simulaatorites.
  • --crt0=: määrab C alglaadimisfaili (crt0) kasutamiseks, mis annab ruumi kohanda käivitusjärjestust igale plaadile, alglaadurile või initsialiseerimisnõuetele.
  • --printf=pakub valikut täieliku rakendamise vahel printf või lühendatud versioonid, näiteks Minimalistlikud versioonid, mis keskenduvad täisarvudele mis säästab märkimisväärselt programmi mälu.
  AIX operatsioonisüsteem: kõik, mida pead teadma

See viimane variant muudab reaalsetes projektides sageli oluliselt: funktsioonide perekond printf See on tavaliselt kõige raskem osa libc-st. Võimalus valida vähendatud versioon, kus säilitatakse võib-olla ainult see, mis on vajalik UART-i põhiliste logide jaoks, võimaldab lõplikul binaarfailil olla palju kompaktsem, mis on väga odavate seadmete puhul ülioluline.

Mõned vood kasutavad ka makrosid ja lippe, näiteks -Dsystem-libc ja Picolibc-ga seotud sysroot-konfiguratsioonid, nii et kompilaator käsitleb seda teeki kui libc vaiketeostus ilma et peaks igale GCC kutsumisele kümneid lippe lisama.

Tee „libc mitmekesisuse” poole Pärsia lahe koostöönõukogus

Picolibci lisamine GCC 16-sse ei tulnud eikusagilt; sellele eelnes GCC projektis endas arutelu vajaduse üle edendada ametlikult toetatud C-teekide mitmekesisust . Umbes aasta tagasi oli meililistides juba juttu erinevate, konkreetsetele kontekstidele kohandatud teekide lubamisest ja Picolibc kerkis esile selge kandidaadina manussüsteemide maailma jaoks.

Selle aja jooksul on Keith Packard läinud lihvida ja esitada plaastri järjestikused versioonid nimekirja juurde gcc-patchesIntegratsiooni kohandati vastavalt kompilaatori kvaliteedi- ja hooldatavuse standarditele. GCC hooldajatega peetud aruteludes on täpsustatud üksikasju, nagu sihtmärgi valik, tugifailide korraldus ja kohandatud suvandite kasutamine.

Selle koostööprotsessi tulemuseks on integratsioon, mis pole pelgalt lisandmoodul, vaid pigem GCC sisemise arhitektuuriga hästi kooskõlas olev laiendus . See tugevdab "libc mitmekesisuse" ideed: nüüd lisaks tavapärastele kombinatsioonidele glibc, Newlib või uClibc-ga teatud keskkondades on GCC puu sees kerge ja hooldatud alternatiivina lisatud Picolibc .

See lähenemisviis on kooskõlas praeguste tööstustrendidega, kus arhitektuurid nagu RISC-V, uued ARMv9 profiilid ja rakenduspõhised SoC-d levivad. Modulaarse ja minimalistliku libc-i olemasolu muudab sama kompilaatori jaoks hõlpsaks kohanemise nii võimsa serveri kui ka andurisõlmega, millel on vaid paar kilobaiti välkmälu.

Seos Newlibi, Newlib-nano ja teiste kergekaaluliste libcs-idega

Picolibci pakutava mõistmiseks on kasulik vaadata seda kontekstis võrreldes teiste klassikaliste valikutega. Newlib on olnud libc standard GCC-põhistes manussüsteemides juba aastaid ning sellest on tuletatud variante nagu Newlib-nano, mille eesmärk on mõnevõrra suurust vähendada teatud funktsionaalsuse arvelt.

Picolibc jagab samu algupärasid, kuid rakendab agressiivsemat ümberkujundamist, mis keskendub modulaarsusele . Idee pole mitte ainult Newlibi "veidi väiksemaks" muutmine, vaid selle ümberstruktureerimine nii, et tänapäevased linkijad saaksid kasutamata koodi palju täpsemalt eemaldada, maksimeerides kaasatud funktsionaalsuse ja hõivatud ruumi suhet.

Kogukonna analüüsi kohaselt (näiteks manussüsteemide arendusblogides avaldatud võrdlused) võib Picolibcile üleminek oluliselt vähendada välkmälu kasutamist, binaarfailide suurust, pinu suurust ja heapi suurust võrreldes Newlibi ja selle nano-variandiga. Praktikas tähendab see võimalust mahutada samale mikrokontrollerile rohkem rakendusloogikat või valida mikrokontroller, millel on vähem mälu, vähendades seeläbi riistvarakulusid.

Samal ajal ei jää Picolibc projekt kinni põhitõdedesse: selle repositoorium näitab, kuidas see lisab tuge 16-bitistele sihtmärkidele, parandab POSIX-ühilduvust ja mitmesuguseid täiustusi, mis muudavad selle atraktiivseks isegi vähem eksootiliste arhitektuuride jaoks: ARM Cortex-M, RISC-V, manustatud MIPS ja palju muud.

Võrreldes teiste kergemate alternatiividega, nagu dietlibc või mitmesugused nanolibid, pakub Picolibc tasakaalu suuruse ja standarditele vastavuse vahel , mis sobib eriti hästi projektidesse, kus on vaja järjepidevaid API-sid, intensiivset testimist ja samal ajal väga väikest jalajälge.

  systemd 259: Peamised muudatused ja süsteeminõuded

Kuidas Picolibci manustatud töövoogudes kasutada

GCC 16 integratsioon tähendab püsivara arendaja igapäevatöös väga konkreetseid muutusi. Selle selgemaks mõistmiseks kujutame ette tüüpilist projekti ARM Cortex-M ristkompileerimisega arendusarvutist. Traditsiooniliselt kasutatakse selliseid tööriistakette nagu arm-none-eabi põhineb Newlibil või mikroprotsessori tootja patenteeritud SDK-del.

GCC 16 abil saate luua või alla laadida tööriistaketi, mis juba sisaldab sihtmärk arm-none-picolibc-eabiKompilaatori konfigureerimisel valikuga --with-picolibcKeskkond on nüüd valmis seda libc-d standardina kasutama koos selle päiste, süsteemijuurkasutaja ja sobivate alglaadimisfailidega.

Sealt edasi toimub kompileerimine uue eesliite abil, näiteks arm-none-picolibc-eabi-gcckoos tavapäraste optimeerimis- ja silumismärkidega. Kui soovite suurust veelgi täpsemalt reguleerida, saate kasutada valikut --printf= variandi valimiseks printf kergem kui see, mis projekti vajadustele vastab.

Keskkondades, mis kasutavad Make'i, CMake'i või muid ehitussüsteeme, piirdub muudatus tavaliselt järgmisega: tööriistaketi definitsiooni kohandamine: määrake uus eesliide, kohandage võib-olla mõningaid linkimisvalikuid ja kontrollige, kas käivitusskriptid (crt0) ja linkeri skriptifailid sobivad Picolibc organisatsiooniga. Paljudel juhtudel on see kohandus palju väiksem kui see, mis juba kaasneb üleminekuga tarnija SDK-lt „puhtale” GCC tööriistaketile.

See voog sillutab teed patenteeritud või suletud keskkondadest loobumisele, erinevate mikrokontrolleriperede vahelise teisaldatavuse saavutamisele ning 100% avatud ja auditeeritava tööriistaketi säilitamisele , mida üha enam hinnatakse sellistes sektorites nagu tööstus, meditsiin või autotööstus.

Mõju asjade internetile, servandmetöötlusele ja reguleeritud sektoritele

Selle integratsiooni ajastus ei ole kokkusattumus: see langeb kokku IoT-seadmete ja servasüsteemide tohutu levikuga , mis töötavad väga piiratud ressurssidega, sageli akutoitel ja võetakse massiliselt kasutusele. Sellistes stsenaariumides võimaldab programmimälu säästmine lihtsalt kasutada odavamaid mikrokontrollereid ja vähendab oluliselt ühikuhinda.

Püsivara suuruse vähendamine lihtsustab ka selliseid protsesse nagu õhu kaudu (OTA) värskendused , kus iga väiksem kilobait tähendab kiiremat edastust, väiksemat energiatarbimist ja väiksemat vigade tõenäosust ebastabiilsetes võrkudes. Picolibc, mis võimaldab koos GCC 16-ga palju kompaktsemaid binaarfaile, mõjutab otseselt seda tüüpi toiminguid.

Reguleeritud tööstusharudes (tervishoid, autotööstus, raudteetööstus jne) on eelised samuti märgatavad. Kuigi LIBC ametlik sertifitseerimine nõuab spetsiifilisi tööriistu ja protsesse, hõlbustab väikese, modulaarse ja suhteliselt hõlpsasti auditeeritava teeki olemasolu sertifitseeritud tööriistakettide või põhjalikele turvaülevaadetele alluvate tööriistakettide pakkumist.

Samal ajal on see pühendumus Picolibcile kooskõlas avatud räni tööriistakettide trendiga , nagu on näha RISC-V ökosüsteemis. Nendes keskkondades ei ole eesmärk mitte ainult ISA avatus, vaid ka kompilaatori, libc ja ülejäänud tööriistaketti läbipaistvus ja kogukonna poolt hooldatavus.

GCC 16, kaasaegsete arhitektuuride (ARMv9.6-A, RISC-V, x86 uued põlvkonnad, näiteks AMD Zen 6 või uued Inteli protsessorid) toe ja Picolibc kui kerge libc kombinatsioon tugevdab GNU kompilaatori positsiooni uue nutiseadmete laine keskse alustalana , alates kantavatest seadmetest kuni kohaliku analüüsi võimalustega tööstusanduriteni.

GCC 16 staatus, muud uued funktsioonid ja toe küpsus

GCC 16 on kavandatud kompilaatori põhiversiooniks selle tüüpilise väljalasketsükli jooksul , ligikaudse väljalaskeaknaga märtsi ja aprilli vahel, kui kõik läheb hooldajate jaoks plaanipäraselt. Kui viimane arendusetapp (4. etapp) kinnitati, nihkus tähelepanu ainult dokumentatsioonile ja regressiooniparandustele , kusjuures uusi funktsioone ei lisatud, välja arvatud väga põhjendatud juhtudel.

  Kõik kõrgetasemeliste keelte ja nende tähtsuse kohta

Kõige viimases aruandes mainiti, et mitu P1 prioriteediga regressiooni , mis on kõige kriitilisemad vead, jäid lahendamata. Kuni nende vigade arv ei jõua nulli või vastuvõetava tasemeni, ei genereerita GCC 16.1 esimesi väljalaskekandidaate. See distsipliin tagab, et Picolibc tugi avaldatakse piisavalt küpses olekus, et seda saaks reaalsetes projektides kasutada.

Lisaks Picolibci toele sisaldab GCC 16 hulga uusi funktsioone: sihtmärgi tugi Armv9.6-A, AMD Zen 6 arhitektuuri esialgne implementatsioon (tuvastatud kui Znver6) oma uute ISA-võimalustega, halduse täiustustega hallatud mälu AMD GPU-des, tugi järgmise põlvkonna Inteli protsessoritele, nagu Nova Lake ja Wildcat Lake, ning LTO (Link Time Optimization) vaikepartitsioonide arvu suurendamine, lisaks muudele täiustustele.

Keele osas on üks märgatavamaid muudatusi see, et C++20-st saab vaikimisi standard, kui ühtegi teist pole täpsustatud. Lisatud on ka uus Algol 68 esiosa, mis laiendab GCC toetatud keelte loendit. Kõik see on kombineeritud veaparanduste ja väiksemate optimeerimistega, mis on jaotatud erinevatele tagaosadele.

Tervikuna võetuna pole GCC 16 lihtsalt "versioon, kuhu Picolibc on lisatud". See on tugev väljalase arhitektuurilise toe, C++ moderniseerimise ja praeguse riistvara võimaluste osas, kus kerge libc lisamine on osa laiemast strateegiast, et kohaneda tänapäevaste arendusvajadustega nii lauaarvutites kui ka eriti manussüsteemides.

Tehnilised kogukonnad ja erialameedia on kogunud neid uusi arenguid: alates Picolibci toele ja "libc mitmekesisuse" ideele keskenduvatest artiklitest kuni uute arhitektuuride, näiteks AMD Zen 6, mõju analüüsideni ja sotsiaalvõrgustikes toimuvate aruteludeni selle üle, kuidas GCC 16-t ära kasutada projektides alates retrokonsoolidest kuni tööstusjuhtimiseni.

Kõik viitab sellele, et GCC 16.1 viimase väljalaske lähenedes ja esimeste integreeritud Picolibc-iga tööriistakettide stabiliseerudes näeme rohkem reaalse maailma kasutusjuhtumeid, võrdlevaid suuruse ja jõudluse teste ning praktilisi juhendeid paljasmetalli, linkeriskriptide ja konkreetsete käivitusjärjestuste kohta, kasutades seda uut kombinatsiooni.

Picolibci tugi GCC 16-s tähistab pöördepunkti manussüsteemide ökosüsteemis: see vähendab drastiliselt ülikerge libc kasutuselevõtuga kaasnevat hõõrdumist, avab ukse väiksemale ja paremini hooldatavale püsivarale ning on kooskõlas üldise trendiga avatud, konfigureeritavate tööriistakettide poole, mis on kohandatud erinevatele arhitektuuridele. Paljude arendusmeeskondade jaoks on mõttekas hakata GCC 16 harusid Picolibciga juba praegu testima, mõõta selle mõju suurusele, jõudlusele ja hooldatavusele ning kaaluda selle lisamist tulevastesse toodetesse.

mehatroonika ja tööstuselektroonika
Seotud artikkel:
Mehhatroonika ja tööstuselektroonika: õpingud, karjäärivõimalused ja topeltkraadid