Kako koristiti Linux naredbu ar za stvaranje statičkih knjižnica

Shell prompt na prijenosnom računalu s Linuxom

Fatmawati Achmad Zaenuri/Shutterstock.com



Koristite Linux |_+_| naredba za stvaranje knjižnica funkcija kada razvijate softver. Ovaj vodič će vam pokazati kako stvoriti statičku biblioteku, izmijeniti je i koristiti je u programu, zajedno s primjerom koda.

The |_+_| zapovjedništvo je pravi veteran — postoji od 1971. Ime |_+_| upućuje na izvornu namjeravanu uporabu alata, koja je bila za stvaranje arhivskih datoteka . Arhivska datoteka je jedna datoteka koja djeluje kao spremnik za druge datoteke. Ponekad za mnoge druge datoteke. Datoteke se mogu dodati, ukloniti iz arhive ili izdvojiti iz nje. Ljudi koji traže tu vrstu funkcionalnosti više se ne okreću |_+_|. Tu ulogu preuzeli su drugi komunalni programi kao što je |_+_|.





The |_+_| naredba se još uvijek koristi u nekoliko specijaliziranih svrha. |_+_| koristi se za stvaranje statičkih biblioteka. Oni se koriste u razvoju softvera. I |_+_| se također koristi za kreiranje datoteka paketa kao što su .deb datoteke koje se koriste u distribuciji Debian Linuxa i njegovim derivatima kao što je Ubuntu.

Proći ćemo kroz korake potrebne za stvaranje i izmjenu statičke biblioteke i pokazati kako koristiti knjižnicu u programu. Da bismo to učinili, potreban nam je zahtjev da statička knjižnica ispuni. Svrha ove biblioteke je kodiranje nizova teksta i dekodiranje kodiranog teksta.



Imajte na umu da je ovo brz i prljav hak u svrhu demonstracije. Nemojte koristiti ovu enkripciju za ništa što ima vrijednost. Najjednostavniji je na svijetu supstitucijska šifra , gdje A postaje B, B postaje C, i tako dalje.

POVEZANO: Kako komprimirati i ekstrahirati datoteke pomoću naredbe tar na Linuxu

Funkcije cipher_encode() i cipher_decode().

Radit ćemo u direktoriju koji se zove biblioteka, a kasnije ćemo stvoriti poddirektorij pod nazivom test.



Oglas

U ovom direktoriju imamo dvije datoteke. U tekstualnoj datoteci pod nazivom cipher_encode.c imamo |_+_| funkcija:

ar

Odgovarajuće |_+_| funkcija je u tekstualnoj datoteci pod nazivom cipher_decode.c:

ar

Datoteke koje sadrže upute za programiranje nazivaju se datotekama izvornog koda. Napravit ćemo datoteku biblioteke pod nazivom libcipher.a. Sadržavat će kompilirane verzije ove dvije datoteke izvornog koda. Također ćemo napraviti kratku tekstualnu datoteku pod nazivom libcipher.h. Ovo je datoteka zaglavlja koja sadrži definicije dviju funkcija u našoj novoj biblioteci.

Svatko tko ima knjižnicu i datoteku zaglavlja moći će koristiti te dvije funkcije u vlastitim programima. Ne trebaju ponovno izumiti kotač i ponovno pisati funkcije; oni jednostavno koriste primjerke u našoj knjižnici.

Sastavljanje datoteka cipher_encode.c i cipher_decode.c

Za prevođenje datoteka izvornog koda koristit ćemo |_+_|, the standardni GNU prevodilac . The |_+_| (kompiliraj, bez veze) opcija govori |_+_| za kompajliranje datoteka i zatim zaustaviti. Ona proizvodi posredničku datoteku iz svake datoteke izvornog koda koja se naziva objektna datoteka. The |_+_| linker obično uzima sve objektne datoteke i povezuje ih zajedno kako bi napravio izvršni program. Taj korak preskačemo korištenjem |_+_| opcija. Trebaju nam samo objektne datoteke.

Oglas

Provjerimo imamo li datoteke za koje mislimo da imamo.

ar

Dvije datoteke izvornog koda nalaze se u ovom direktoriju. Koristimo |_+_| da ih prevede u objektne datoteke.

ar tar

Ne smije biti izlaza iz |_+_| ako sve bude dobro.

Time se generiraju dvije objektne datoteke s istim imenom kao datoteke izvornog koda, ali s .o ekstenzijama. Ovo su datoteke koje moramo dodati u datoteku biblioteke.

ar

Kreiranje knjižnice libcipher.a

Za kreiranje datoteke biblioteke—koja je zapravo arhivska datoteka—koristit ćemo |_+_|.

Koristimo |_+_| (kreiraj) opciju za stvaranje datoteke biblioteke, |_+_| (dodaj sa zamjenom) opciju za dodavanje datoteka u datoteku biblioteke i |_+_| (indeks) opcija za stvaranje indeksa datoteka unutar datoteke biblioteke.

Oglas

Datoteku biblioteke nazvat ćemo libcipher.a. Dajemo to ime u naredbenom retku, zajedno s nazivima objektnih datoteka koje ćemo dodati u biblioteku.

ar

Ako navedemo datoteke u direktoriju, vidjet ćemo da sada imamo datoteku libcipher.a.

ls -l

Ako koristimo |_+_| (tablica) opcija s |_+_| možemo vidjeti module unutar datoteke biblioteke.

ar

Kreiranje datoteke zaglavlja libcipher.h

Datoteka libcipher.h bit će uključena u bilo koji program koji koristi biblioteku libcipher.a. Datoteka libcipher.h mora sadržavati definiciju funkcija koje se nalaze u biblioteci.

Da bismo stvorili datoteku zaglavlja, moramo upisati definicije funkcije u a uređivač teksta kao što je gedit . Datoteci dajte naziv libcipher.h i spremite je u isti direktorij kao i datoteku libcipher.a.

cipher_encode()

Korištenje biblioteke libcipher

Jedini siguran način da testirate našu novu knjižnicu je da napišete mali program za korištenje. Prvo ćemo napraviti direktorij pod nazivom test.

cipher_decode()Oglas

Kopirat ćemo biblioteku i datoteke zaglavlja u novi direktorij.

gcc

Promijenit ćemo se u novi imenik.

-c

Provjerimo jesu li naše dvije datoteke ovdje.

gcc

Moramo stvoriti mali program koji može koristiti knjižnicu i dokazati da funkcionira kako se očekuje. Upišite sljedeće retke teksta u uređivač. Spremite sadržaj uređivača u datoteku pod nazivom test.c u test imenik.

gcc

Tijek programa je vrlo jednostavan:

  • Uključuje datoteku libcipher.h tako da može vidjeti definicije funkcije knjižnice.
  • Stvara niz koji se zove tekst i u njega pohranjuje riječi How-To Geek voli Linux.
  • Ispisuje taj niz na ekran.
  • poziva |_+_| funkcija za kodiranje niza i ispisuje kodirani niz na zaslon.
  • Poziva |_+_| za dekodiranje niza i ispisuje dekodirani niz na ekran.

Za generiranje |_+_| programa, moramo kompajlirati test.c program i povezati u biblioteku. The |_+_| (izlaz) opcija govori |_+_| kako nazvati izvršni program koji generira.

-c

Ako |_+_| tiho vas vraća u naredbeni redak, sve je u redu. Sada testirajmo naš program. Trenutak istine:

gcc

I vidimo očekivani učinak. The |_+_| program ispisuje običan tekst ispisuje šifrirani tekst, a zatim ispisuje dešifrirani tekst. Koristi funkcije unutar naše nove knjižnice. Naša knjižnica radi.

Uspjeh. Ali zašto tu stati?

Dodavanje drugog modula u knjižnicu

Dodajmo još jednu funkciju u biblioteku. Dodat ćemo funkciju koju programer može koristiti za prikaz verzije biblioteke koju koristi. Morat ćemo stvoriti novu funkciju, kompajlirati je i dodati novu objektnu datoteku postojećoj datoteci biblioteke.

Oglas

Upišite sljedeće retke u uređivač. Spremite sadržaj uređivača u datoteku pod nazivom cipher_version.c, u knjižnica imenik.

gcc

Moramo dodati definiciju nove funkcije u datoteku zaglavlja libcipher.h. Dodajte novi redak na dno te datoteke, tako da izgleda ovako:

ar

Spremite izmijenjenu datoteku libcipher.h.

Moramo sastaviti datoteku cipher_version.c tako da imamo objektnu datoteku cipher_version.o.

-c

Ovo stvara datoteku cipher_version.o. Novu objektnu datoteku možemo dodati biblioteci libcipher.a sljedećom naredbom. The |_+_| (verbose) opcija čini obično tiho |_+_| reci nam što je učinio.

-r

Nova objektna datoteka dodaje se u datoteku biblioteke. |_+_| ispisuje potvrdu. Dodano sredstvo a.

Možemo koristiti |_+_| (tablica) opcija da vidite koji se moduli nalaze unutar datoteke biblioteke.

-s

Oglas

Sada postoje tri modula unutar naše knjižnične datoteke. Iskoristimo novu funkciju.

Korištenje funkcije cipher_version().

Uklonimo staru biblioteku i datoteku zaglavlja iz testnog direktorija, kopirajmo nove datoteke i zatim se vratimo u testni direktorij.

Izbrisat ćemo stare verzije datoteka.

-t

Nove verzije ćemo kopirati u testni direktorij.

ar

Promijenit ćemo se u testni direktorij.

cipher_encode()

A sada možemo modificirati program test.c tako da koristi novu funkciju biblioteke.

Moramo dodati novi redak test.c programu koji poziva |_+_| funkcija. Ovo ćemo postaviti prije prvog |_+_| crta.

cipher_decode()

Spremi ovo kao test.c. Sada ga možemo sastaviti i testirati je li nova funkcija operativna.

test

Pokrenimo novu verziju |_+_|:

Nova funkcija radi. Možemo vidjeti verziju biblioteke na početku izlaza iz |_+_|.

Ali može postojati problem.

Zamjena modula u knjižnici

Ovo nije prva verzija knjižnice; to je drugi. Naš broj verzije nije točan. Prva verzija nije imala |_+_| funkcija u njemu. Ovaj radi. Dakle, ovo bi trebala biti verzija 0.0.2. Moramo zamijeniti |_+_| funkcija u knjižnici s ispravljenom.

Srećom, |_+_| čini to vrlo lakim za napraviti.

Oglas

Prvo, uredimo datoteku cipher_version.c u knjižnica imenik. Promijenite tekst verzije 0.0.1 alfa u verziju 0.0.2 alfa. Trebalo bi izgledati ovako:

-o

Spremite ovu datoteku. Moramo ga ponovno prevesti kako bismo stvorili novu objektnu datoteku cipher_version.o.

gcc

Sada ćemo zamijeniti postojeći objekt cipher_version.o u biblioteci s našom novokompiliranom verzijom.

Koristili smo |_+_| (dodaj sa zamjenom) prije, za dodavanje novih modula u biblioteku. Kada ga koristimo s modulom koji već postoji u biblioteci, |_+_| zamijenit će staru verziju novom. The |_+_| (indeks) opcija će ažurirati indeks knjižnice i |_+_| (verbose) opcija će učiniti |_+_| reci nam što je učinio.

gcc

Ovaj put |_+_| izvješćuje da je zamijenio modul cipher_version.o. R znači zamijenjeno.

Korištenje ažurirane funkcije cipher_version().

Trebali bismo koristiti našu modificiranu biblioteku i provjeriti radi li.

Oglas

Kopirat ćemo datoteke biblioteke u testni direktorij.

test

Promijenit ćemo se u testni direktorij.

-v

Moramo ponovno sastaviti naš testni program s našom novom bibliotekom.

ar

A sada možemo testirati naš program.

ar

Rezultat testnog programa je ono što smo očekivali. Točan broj verzije prikazuje se u nizu verzije, a rutine šifriranja i dešifriranja rade.

Brisanje modula iz biblioteke

Čini se šteta nakon svega toga, ali izbrišite datoteku cipher_version.o iz datoteke biblioteke.

Da bismo to učinili, koristit ćemo |_+_| (izbriši) opciju. Također ćemo koristiti |_+_| (opcija) opcija, tako da |_+_| govori nam što je učinio. Također ćemo uključiti |_+_| (indeks) opcija za ažuriranje indeksa u datoteci biblioteke.

-t

Oglas

|_+_| javlja da je uklonio modul. D znači izbrisano.

Ako pitamo |_+_| za popis modula unutar datoteke biblioteke, vidjet ćemo da smo se vratili na dva modula.

cipher_version()

Ako ćete obrisati module iz svoje biblioteke, ne zaboravite ukloniti njihovu definiciju iz datoteke zaglavlja knjižnice.

Podijelite svoj kod

Knjižnice omogućuju dijeljenje koda na praktičan, ali privatan način. Svatko kome date datoteku biblioteke i datoteku zaglavlja može koristiti vašu biblioteku, ali vaš stvarni izvorni kod ostaje privatan.

Linux naredbe
Datoteke katran · pv · mačka · tac · chmod · zahvat · razl · sed · S · čovjek · pushd · popd · fsck · testdisk · sljed · F D · pandok · CD · $PATH · awk · pridružiti · jq · preklopiti · jedinstven · journalctl · rep · država · ls · fstab · izbaciti · manje · chgrp · chown · rev · izgled · žice · tip · preimenovati · patentni zatvarač · otvoriti rajsfešlus · montirati · razmontirati · instalirati · fdisk · mkfs · rm · rmdir · rsync · df · gpg · mi · nano · mkdir · iz · ln · zakrpa · Pretvoriti · rclone · usitniti · SRM
Procesi alias · zaslon · vrh · Lijepo · renice · napredak · strace · sustav · tmux · chsh · povijesti · na · serija · besplatno · koji · dmesg · usermod · p.s · chroot · xargs · tty · ružičasti · lsof · vmstat · pauza · zid · Da · ubiti · spavati · sudo · njegov · vrijeme · groupadd · usermod · grupe · lshw · ugasiti · ponovno podizanje sustava · Stop · isključenje · passwd · lscpu · crontab · datum · bg · fg
Umrežavanje netstat · ping · traceroute · ip · ss · tko je · fail2ban · bmon · vas · prst · nmap · ftp · kovrča · wget · tko · tko sam ja · U · iptables · ssh-keygen · ufw

POVEZANO: Najbolja prijenosna računala s Linuxom za programere i entuzijaste

PROČITAJTE SLJEDEĆE
  • › 5 web stranica koje svaki korisnik Linuxa treba označiti
  • › Mapa računala je 40: Kako je Xerox Star stvorio radnu površinu
  • › Što je MIL-SPEC zaštita od pada?
  • › Kako pronaći svoj Spotify omotan 2021
  • › Funkcije u odnosu na formule u Microsoft Excelu: u čemu je razlika?
  • & rsaquo; Cyber ​​ponedjeljak 2021.: Najbolje tehničke ponude
Fotografija profila Davea McKaya Dave McKay
Dave McKay je prvi put koristio računala kada je bušena papirna traka bila u modi i od tada se bavi programiranjem. Nakon više od 30 godina u IT industriji, sada je stalni tehnološki novinar. Tijekom svoje karijere radio je kao freelance programer, voditelj međunarodnog tima za razvoj softvera, voditelj projekta IT usluga, a nedavno i kao službenik za zaštitu podataka. Njegovo pisanje objavili su howtogeek.com, cloudsavvyit.com, tenterpriser.com i opensource.com. Dave je Linux evanđelist i zagovornik otvorenog koda.
Pročitajte cijelu biografiju

Zanimljivi Članci