Näen joskus, että näitä kahta termiä käytetään vaihdettavasti.
Mikä on näiden kahden termin todellinen ero? Kuinka niitä käytetään eri tavalla? Onko olemassa muita vaihtoehtoja näille kahdelle kirjastolle?
Kommentit
- Oletan, että olet suorittanut online-haun ennen kuin kysyt täällä. Mitä löysit tähän mennessä? Kuinka nämä tiedot eivät vastaa kysymykseesi? muokkaa kysymystä, jotta voit näyttää ponnistelusi, jotta vastausten ei ' ei tarvitse toistaa jotain, mitä jo tiedät. . Katso myös: Kuinka voin esittää hyvän kysymyksen?
Vastaa
C-vakiokirjasto on osa C-ohjelmointikieliä, joten se on määritys (kirjoitettu englanniksi jossakin teknisessä raportissa). Esimerkiksi n1570 -asiakirja selittää, mikä on malloc
ja miten sen pitäisi toimia.
On myös toinen asiaankuuluva eritelmä, C POSIX-kirjasto (joka on enemmän tai vähemmän C-standardikirjaston supersarja). Esimerkiksi sekä dlopen
että fork
määrittelee POSIX (mutta C11-standardi jättää sen huomiotta).
GNU glibc -kirjasto on C-standardikirjaston ja C POSIX -kirjaston (superset) toteutus. Se on joitain ilmaisia ohjelmistoja (kirjoitettu enimmäkseen C-kirjaimina GCC-murretta varten vähän kokoonpanijaa käytettäessä). Se käyttää -järjestelmäkutsuja (lueteltu -syscallissa (2) ), joita ydin . Voit käyttää jotakin muuta C-standardikirjaston toteutusta, kuten musl-libc (tai dietlibc ).
Voit välttää kaikki libc
ja tehdä suoria järjestelmäkutsuja ytimeen kirjoittamalla assembler-koodia. Tätä tehdään harvoin (esimerkki on Bones -kaavion kääntäjä tai BusyBox ). Suurin osa ohjelmista tekee järjestelmäkutsut libc
-palvelun kautta ja hyödyntää kyseisen libc
-toimintoja. Siksi libc
on Linux-järjestelmien kulmakivi …
Muuten, GNU glibc: llä on hyödyllisiä toimintoja standardin ulkopuolella, kuten kuten takaisinkelatoiminnot tai joitain muita tapoja jäsentää ohjelman argumentit .
Huomaa, että standardin vaatimuksen ja käytännössä tapahtuvan välillä on hienovaraisia eroja (esimerkiksi muistin ylisitoumus vaikuttaa malloc
epätyypillisellä tavalla, tai Linuxilla dlopen
on enemmän lippuja kuin mitä POSIX vaatii).
Th man
-sivut Linuxissa selittävät yleensä, kuinka standardinmukaisuus on funktio. Etsi esimerkiksi kohdasta dlopen (3) .
Vastaa
Jokaisen C: n toteutuksen on toimitettava standardikirjasto, mutta FSF ei kirjoita kaikkia C-kääntäjiä! Joten GNU C-kääntäjä käyttää GNU C-kirjastoa ja Intelin C-kääntäjä käyttää erilaista vakiokirjastoa (vähemmän tarttuvalla nimellä). Molemmat ovat standardikirjaston esimerkkejä, joita C-standardi vaatii.
vastaus
Jos luit ”UNIX” sanalle ”GNU”, termit olivat pitkään keskenään vaihdettavissa, koska ne olivat samanlaisia.
Kunnes BSD lähti liikkeelle, AT & T ”UNIX-kirjasto oli THE C-kirjasto – koska heidän kääntäjänsä oli THE C-kääntäjä (suurimmaksi osaksi).
BSD: n jälkeen sinulla oli System V UNIX, BSD UNIX, GNU (GNU ”Not Unix), ja melko pian oli C-kääntäjiä kaikkialla, jokaisella on oma standardikirjastonsa toteutus.