Miten voin tehdä lib-tiedosto C

M

Mahmed

Guest
Haluaisin tietää, miten voin toimia kirjasto-tiedostoja.Itse asiassa haluan lähdekoodin C tehdä funktion defination kirjasto-tiedostoja, ja prototyyppien ja header-tiedosto
Esimerkiksi:
int summa ()
(
return 5 5;
)
pleaze lähettää minulle askel askeleelta menettelyä.
Haluan prototyyppien toiminto summa () ja ylä-tiedoston sum.h ja defination vuonna sum.lib
Miten saan nämä molemmat tiedostot.Haluan piilota lähde lib files Kiitos

 
Hi Mahmed,Kirjasto on kokoelma moduuleja, kukin moduuli sisältää yhden tai useampiatoiminnan ja / tai tietojen määritelmät.
Rakeisuuden kirjastomoduuli, joten linkittäjän purkaa koko moduulit kirjastosta, vaikkaettä vain yksi tunnuksia määritelty.
Tietojen sisälläKirjasto tiedosto on rakennettu siten tehdä linkittäjän työtä helppoamahdollista (yhdistää suuria staattisia kirjastoja käytetään olla suuri kiputakaisin, kun levyt oli (paljon) hitaammin kuin tänään).
Kirjastot on luotu erityinen väline, kutsukaamme sitä kirjastonhoitaja.Panoksensa on yksi tai useampi kohde luotuja tiedostoja kääntäjä.
Tuotoson kirjasto, joka sisältää kunkin kohteen tiedoston moduuli.
Kirjastonhoitaja voimyös suorittaa kirjaston ylläpito: poistaa moduuleja, korvaa moduulit, lisääuusia moduuleja kirjaston, luettelon sisältöä kirjaston.
Kääntäjä yleensä ei tiedä mitään kirjastoista.
Ja kaikkiSe on kertonut niistä on toimintoja ja tietoja ne sisältävät.Tämä on yleensä saavutetaan kirjaston header-tiedosto (t), että mukanaKirjasto itse.
Kääntäjä ei ole linkkiä * mitään * kirjastossa, koska tämä ontehtävänä linkittäjän.
Linkittäjä yhdistetään, oletusarvoisesti, kirjastot, jotka tulevatkääntäjä, täytäntöönpanosta standardi C-kirjasto ja mitä laajennuksiaimplementor säädetään (Kutsun niitä järjestelmän kirjastojen jaloput tästä opetusohjelma).
Liitä oman kirjastot, sinun onnimenomaisesti pyytää linkittäjän etsiä niitä symboli ratkaisemisessaprosessiin, myös niiden nimet, yleensä sen jälkeen, kun nimetobjekti tiedostoja, jotka käyttävät kamaa kirjastoista.
Here's demo esimerkki, jonka pitäisi toimia missä tahansa Unix-järjestelmässä.
Luokkanumeroitse on alustasta riippumaton, vain käytettävät komennot ovat Unix erityisiä.Löytää niihin rinnastettavat teidän ei-Unix-järjestelmä olisi opettavaistakäyttää.
Meidän kirjastossa on kaksi moduulia, jokainen niistä sisältää yhden toiminnon.Kirjaston header-tiedosto on julistaa nämä kaksi tehtävää:
Fangornin: ~ / tmp 74> cat demo.h# ifndef DEMO_H_INCLUDED__# define DEMO_H_INCLUDED__
void demo_foo (void);void demo_bar (void);
# endif
Esikäsittely direktiivejä ei oikeastaan tarvita tähän triviaalejaEsimerkiksi niiden tarkoituksena on välttää useiden sisällyttämistäheader.
Monimuotoista otsikot tarvitse tällaista suojaa, muttavarsinkin jos ne määrittelevät omia makroja.
Nyt meillä on toteuttaa tehtäviä ilmoitettu otsikko:
Fangornin: ~ / tmp 78> cat demo_foo.c# include <stdio.h># include "demo.h"
void demo_foo (void)(puts ( "Tämä on demo_foo in action");)Fangornin: ~ / tmp 79> cat demo_bar.c# include <stdio.h># include "demo.h"
void demo_bar (void)(puts ( "Tämä on demo_bar in action");)
Huomaa, että jokainen tiedosto sisältää myös kirjaston otsikkoa.
Tämä on tarpeenolla varma, että todellinen toiminta määritelmä vastaa toiminnonilmoitus kirjastossa otsikossa.
Se on hyvin helppo vaihtaa toiminnonDefinition ja unohtaa päivittää kirjaston otsikon mukaisesti, niin,sisällyttämällä kirjaston otsikon voimme siirtää kääntäjän työtätarkastaa, että toiminto ilmoituksen otsikkoa ja toimintamääritelmä lähdetiedostossa ovat edelleen ajan tasalla.
Nyt on aika rakentaa kirjastoon.
Ensimmäinen, kääntää meidän kaksi toiminnotobjekti-koodi:
Fangornin: ~ / tmp 80> cc-c demo_foo.cFangornin: ~ / tmp 81> cc-c demo_bar.c
Sen tuloksena meillä tiedostot demo_foo.o ja demo_bar.o jotka voivatvoidaan rakentaa demo kirjasto:
Fangornin: ~ / tmp 82> ar r demo.a demo_foo.o demo_bar.o
Nyt meillä on demo.a, kirjasto (tai arkiston Unix Lingo, jotennimi ar varten kirjastonhoitaja (arkisto) ja. loppuosa kirjastonfile).
Voimme tarkistaa sen sisällön käyttäen samaa komentoa käytimmerakentaa se vetosi eri tavalla, tietenkin:
Fangornin: ~ / tmp 85> ar t demo.ademo_foo.odemo_bar.o
Tämä ei kerro meille, kuitenkin, mitä sisällä kunkin moduulin.
Siihentarkoitukseen, Unix tarjoaa toisen komennon nimi Extractor apuohjelma:
Fangornin: ~ / tmp 83> nm demo.a
demo_foo.o:00000000 T demo_fooU tuo
demo_bar.o:00000000 T demo_barU tuo
Symbolit merkitty ja T on määritelty moduuli, symbolit merkitytja U on käyttää moduulia, vaan odotettavissa on määriteltävä muualla.
Ja nyt voimme käyttää demo-kirjasto, jossa on ohjelmaa niin vähäpätöinen kuinKirjasto itse:
Fangornin: ~ / tmp 89> cat demo.c# include "demo.h"
int main ()(demo_foo ();demo_bar ();return 0;)
Rakentaa hakemuksen, meillä on kaksi vaihtoehtoa:
1.
Kääntää pääohjelma erikseen, sitten linkki tuloksena kohdemeidän kirjasto (ja epäsuorasti, ja järjestelmä kirjastot):
Fangornin: ~ / tmp 90> cc-c demo.cFangornin: ~ / tmp 91> cc-o demo demo.o demo.aFangornin: ~ / tmp 92>. / demoTämä on demo_foo toiminnassaTämä on demo_bar toiminnassa
2.
Oikotietä ja tehdä kaikki yhdellä komentoriviltä.
Tämäoikeastaan ole mahdollista joissakin ei-Unix-järjestelmät.
Fangornin: ~ / tmp 93> cc-o demo demo.c demo.aFangornin: ~ / tmp 94>. / demoTämä on demo_foo toiminnassaTämä on demo_bar toiminnassa
CC komento tunnustaa tiedostoja. O ja. Päätteitä kuten objekti jaosalta, kirjasto-tiedostoja eikä yritä tehdä mitään toimintaaniitä, paitsi toimittamalla ne linkittäjän.
Linkityskirjastojen asettaa kaikkiobjekti tiedostot yhteen ja yritä ratkaista puuttuvien symbolienkirjastot toimittamien käyttäjä, jonka myös vain moduulit tarvitaantätä tarkoitusta varten.
Jos yksi kirjasto moduuli käyttää tunnuksia ei ole vielä määritelty,kirjastot etsitään taas.
Mitään tunnukset, jotka ovat edelleenmäärittelemätön, järjestelmän kirjastot etsitään.
Olen vain sitä, staattiset kirjastot tässä artikkelissa, sillä ne ovatkirjastot olet todennäköisesti kiinnostunut, on nykyisen tason.
Täydellisyyttä, dynaaminen (tai jaettu) kirjastot on syytä mainita myös.Jotkut kirjaston tehtäviä, erityisesti järjestelmästä kirjastot ovatkäytetään monissa ohjelmissa.
Myös niiden koodi kunkin ohjelman tarvitseeniitä olisi melko turhaa, ja sen yhdistäminen aikaa, suoritettava tiedostokoko ja latausaika.
On myös kysymys kirjastot ovatpäivitetty tietoturvapäivitykset soveltaa ja niin edelleen.
Ohjelmat staattistakirjastot olisi relinked voidakseen hyötyä uusienkirjastot.
Ratkaisu tähän ongelmaan on käyttöä kirjastoja.
Heidänmoduulit ole sisällytetty suoritustiedoston, linkittäjän vaintarkastuksia, jotka shared library moduulit ovat tarpeen ratkaista kaikkiratkaisematta symbolit ohjelman.
Kun ohjelma käynnistetään, kuormaimentarkistaa, jotka jakoivat moduulit tarvitsevat ohjelmaa ei ole joladattu järjestelmän muistista ja ladata niitä siellä, eikä yhdessämuun ohjelman.
Kun ladattu järjestelmän muistiin, jokamuu ohjelma tarvitsee niitä voi käyttää samaa kopion, mikä säästää sekä muistiaja levytilaa.
Toinen etu on, ettei linkittää on tarpeenhyödyntää kirjaston päivityksen.
Valitettavasti kaikki, mikä liittyy luomiseen ja asennusJaetut kirjastot on erittäin järjestelmä erityinen, mutta suurin osa keskustelustasiitä, miten kirjoittaa kirjastoon sovelletaan niiden osalta, myös.
Monissa tapauksissa,samassa kirjastossa esiintyy sekä yhteisiä että staattinen muoto, rakennettuaivan samaa alkuperää tiedostoja.Cheers ...

 
käytön Keil.caopy toiminto txt tuntuu.Nimeä tiedosto "nimi". h laajennus.määritellä muuttujat ja toimii extren

 
useimmissa IDE: n kääntäjät ovat hankkeen mahdollisuus kääntää sen exe tai lib.

 

Welcome to EDABoard.com

Sponsor

Back
Top