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) .

Katso myös libc (7) ja vdso (7) .

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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *