Kaip naudoti Linux ar komandą statinėms bibliotekoms kurti

„Shell“ raginimas „Linux“ nešiojamajame kompiuteryje

Fatmawati Achmad Zaenuri / Shutterstock.com



Naudokite Linux |_+_| komandą, kad sukurtumėte funkcijų bibliotekas, kai kuriate programinę įrangą. Šioje pamokoje bus parodyta, kaip sukurti statinę biblioteką, ją modifikuoti ir naudoti programoje su pavyzdiniu kodu.

|_+_| komanda yra tikras veteranas – ji gyvuoja nuo 1971 m. Pavadinimas |_+_| nurodo originalų numatomą įrankio naudojimą, kuris buvo archyvo failams kurti . Archyvo failas yra vienas failas, kuris veikia kaip kitų failų talpykla. Kartais daugeliui kitų failų. Failus galima pridėti prie archyvo, jį pašalinti arba ištraukti iš jo. Žmonės, ieškantys tokio tipo funkcijų, daugiau nesikreipia į |_+_|. Šį vaidmenį perėmė kitos komunalinės paslaugos, pvz., |_+_|.





|_+_| komanda vis dar naudojama keletui specialių tikslų. |_+_| naudojamas statinėms bibliotekoms kurti. Jie naudojami kuriant programinę įrangą. Ir |_+_| taip pat naudojamas kuriant paketų failus, tokius kaip .deb failai, naudojami Debian Linux paskirstyme ir jo dariniuose, pvz., Ubuntu.

Atliksime veiksmus, reikalingus statinei bibliotekai sukurti ir modifikuoti, ir parodysime, kaip biblioteką naudoti programoje. Norėdami tai padaryti, mums reikia reikalavimo, kad statinė biblioteka atitiktų. Šios bibliotekos tikslas yra koduoti teksto eilutes ir iššifruoti užkoduotą tekstą.



Atminkite, kad tai greitas ir nešvarus įsilaužimas demonstravimo tikslais. Nenaudokite šio šifravimo niekam, kas yra vertinga. Tai paprasčiausias pasaulyje pakeitimo šifras , kur A tampa B, B tampa C ir pan.

SUSIJĘS: Kaip suspausti ir išskleisti failus naudojant „tar“ komandą „Linux“.

Cipher_encode() ir cipher_decode() funkcijos

Dirbsime kataloge, pavadintame biblioteka, o vėliau sukursime pakatalogią, pavadintą test.



Skelbimas

Šiame kataloge turime du failus. Tekstiniame faile, pavadintame cipher_encode.c, turime |_+_| funkcija:

ar

Atitinkamas |_+_| funkcija yra tekstiniame faile, pavadintame cipher_decode.c:

ar

Failai, kuriuose yra programavimo instrukcijos, vadinami šaltinio kodo failais. Sukursime bibliotekos failą libcipher.a. Jame bus sudarytos šių dviejų šaltinio kodo failų versijos. Taip pat sukursime trumpą tekstinį failą libcipher.h. Tai antraštės failas, kuriame yra dviejų mūsų naujos bibliotekos funkcijų apibrėžimai.

Kiekvienas, turintis biblioteką ir antraštės failą, galės naudoti dvi funkcijas savo programose. Jiems nereikia iš naujo išradinėti dviračio ir perrašyti funkcijų; jie tiesiog naudojasi mūsų bibliotekos kopijomis.

cipher_encode.c ir cipher_decode.c failų kompiliavimas

Norėdami sudaryti šaltinio kodo failus, naudosime |_+_|, standartinis GNU kompiliatorius . |_+_| (kompiliuoti, be nuorodos) parinktis nurodo |_+_| Norėdami sukompiliuoti failus ir tada sustabdyti. Jis sukuria tarpinį failą iš kiekvieno šaltinio kodo failo, vadinamo objekto failu. |_+_| linker paprastai paima visus objekto failus ir susieja juos kartu, kad sukurtų vykdomąją programą. Praleidžiame šį veiksmą naudodami |_+_| variantas. Mums reikia tik objekto failų.

Skelbimas

Patikrinkime, kad turime failus, kuriuos, mūsų manymu, turime.

ar

Šiame kataloge yra du šaltinio kodo failai. Naudokime |_+_| kompiliuoti juos į objektų failus.

ar tar

Neturi būti išvesties iš |_+_| jei viskas bus gerai.

Taip sugeneruojami du objektų failai tokiu pačiu pavadinimu kaip ir šaltinio kodo failai, bet su plėtiniais .o. Tai yra failai, kuriuos turime įtraukti į bibliotekos failą.

ar

Libcipher.a Library kūrimas

Norėdami sukurti bibliotekos failą, kuris iš tikrųjų yra archyvo failas, naudosime |_+_|.

Mes naudojame |_+_| (sukurti) parinktis, skirta sukurti bibliotekos failą, |_+_| (pridėti su pakeisti) parinktis, kad pridėtumėte failus prie bibliotekos failo, ir |_+_| (indekso) parinktis, kad sukurtumėte bibliotekos failo failų indeksą.

Skelbimas

Bibliotekos failą vadinsime libcipher.a. Pateikiame šį pavadinimą komandinėje eilutėje kartu su objektų failų, kuriuos ketiname įtraukti į biblioteką, pavadinimais.

ar

Jei surašysime failus į katalogą, pamatysime, kad dabar turime failą libcipher.a.

ls -l

Jei naudosime |_+_| (lentelės) parinktis su |_+_| matome bibliotekos failo viduje esančius modulius.

ar

Libcipher.h antraštės failo kūrimas

Failas libcipher.h bus įtrauktas į bet kurią programą, kuri naudoja biblioteką libcipher.a. Faile libcipher.h turi būti bibliotekoje esančių funkcijų apibrėžimas.

Norėdami sukurti antraštės failą, turime įvesti funkcijų apibrėžimus į a teksto redaktorius, pvz., gedit . Pavadinkite failą libcipher.h ir išsaugokite jį tame pačiame kataloge kaip failas libcipher.a.

cipher_encode()

Naudojant libcipher biblioteką

Vienintelis tikras būdas išbandyti naująją biblioteką yra parašyti nedidelę programą, kad ją naudotumėte. Pirmiausia sukursime katalogą, vadinamą testu.

cipher_decode()Skelbimas

Nukopijuosime bibliotekos ir antraštės failus į naują katalogą.

gcc

Keičiamės į naują katalogą.

-c

Patikrinkime, ar čia yra mūsų du failai.

gcc

Turime sukurti nedidelę programą, kuri galėtų naudoti biblioteką ir įrodyti, kad ji veikia taip, kaip tikėtasi. Į redaktorių įveskite šias teksto eilutes. Išsaugokite redaktoriaus turinį į failą, pavadintą test.c bandymas katalogas.

gcc

Programos eiga labai paprasta:

  • Jame yra failas libcipher.h, kad būtų galima matyti bibliotekos funkcijų apibrėžimus.
  • Jis sukuria eilutę, vadinamą tekstu, ir joje išsaugo žodžius How-To Geek loves Linux.
  • Jis atspausdina tą eilutę ekrane.
  • ji vadina |_+_| funkcija užkoduoti eilutę, o užkoduotą eilutę atspausdina ekrane.
  • Tai skambina |_+_| dekoduoti eilutę ir atspausdinti iššifruotą eilutę į ekraną.

Norėdami sukurti |_+_| programą, turime sukompiliuoti test.c programą ir nuorodą bibliotekoje. |_+_| (išvesties) parinktis nurodo |_+_| kaip vadinti vykdomąją programą, kurią ji sugeneruoja.

-c

Jei |_+_| tyliai grąžina jus į komandų eilutę, viskas gerai. Dabar išbandykime savo programą. Tiesos akimirka:

gcc

Ir matome laukiamą produkciją. |_+_| programa spausdina paprastą tekstą spausdina užšifruotą tekstą ir tada išspausdina iššifruotą tekstą. Jis naudoja mūsų naujos bibliotekos funkcijas. Mūsų biblioteka dirba.

Sėkmė. Bet kam čia sustoti?

Kito modulio įtraukimas į biblioteką

Pridėkime prie bibliotekos dar vieną funkciją. Pridėsime funkciją, kurią programuotojas gali naudoti norėdamas parodyti naudojamos bibliotekos versiją. Turėsime sukurti naują funkciją, sukompiliuoti ją ir pridėti naują objekto failą prie esamo bibliotekos failo.

Skelbimas

Į redaktorių įveskite šias eilutes. Išsaugokite redaktoriaus turinį faile, pavadintame cipher_version.c, esančiame biblioteka katalogas.

gcc

Turime pridėti naujos funkcijos apibrėžimą į libcipher.h antraštės failą. Pridėkite naują eilutę to failo apačioje, kad ji atrodytų taip:

ar

Išsaugokite pakeistą libcipher.h failą.

Turime sukompiliuoti cipher_version.c failą, kad turėtume objekto failą cipher_version.o.

-c

Tai sukuria cipher_version.o failą. Naują objekto failą galime įtraukti į libcipher.a biblioteką naudodami šią komandą. |_+_| (verbose) parinktis daro paprastai tylų |_+_| papasakok, ką jis padarė.

-r

Naujas objekto failas pridedamas prie bibliotekos failo. |_+_| išspausdina patvirtinimą. Pridėta a priemonė.

Galime naudoti |_+_| (lentelė), kad pamatytumėte, kokie moduliai yra bibliotekos faile.

-s

Skelbimas

Dabar mūsų bibliotekos faile yra trys moduliai. Pasinaudokime nauja funkcija.

Naudojant cipher_version() funkciją.

Pašalinkime seną biblioteką ir antraštės failą iš bandomojo katalogo, nukopijuokime naujus failus ir pakeiskime atgal į bandomąjį katalogą.

Ištrinsime senas failų versijas.

-t

Naujas versijas nukopijuosime į bandymų katalogą.

ar

Pakeisime į bandymų katalogą.

cipher_encode()

Ir dabar mes galime modifikuoti test.c programą, kad ji naudotų naują bibliotekos funkciją.

Turime pridėti naują eilutę į test.c programą, kuri iškviečia |_+_| funkcija. Pateiksime tai prieš pirmąjį |_+_| linija.

cipher_decode()

Išsaugokite tai kaip test.c. Dabar galime ją kompiliuoti ir patikrinti, ar nauja funkcija veikia.

test

Paleiskite naują |_+_| versiją:

Nauja funkcija veikia. Bibliotekos versiją matome išvesties pradžioje iš |_+_|.

Tačiau gali kilti problemų.

Modulio keitimas bibliotekoje

Tai nėra pirmoji bibliotekos versija; tai antrasis. Mūsų versijos numeris neteisingas. Pirmojoje versijoje nebuvo |_+_| funkcija joje. Šis tai daro. Taigi tai turėtų būti 0.0.2 versija. Turime pakeisti |_+_| funkcija bibliotekoje su pataisyta.

Laimei, |_+_| tai labai lengva padaryti.

Skelbimas

Pirmiausia redaguokite cipher_version.c failą biblioteka katalogas. Pakeiskite 0.0.1 versijos alfa tekstą į 0.0.2 alfa versiją. Tai turėtų atrodyti taip:

-o

Išsaugokite šį failą. Turime jį dar kartą sukompiliuoti, kad sukurtume naują objekto failą cipher_version.o.

gcc

Dabar mes padarysime pakeisti esamą cipher_version.o objektą bibliotekoje su mūsų naujai sudaryta versija.

Naudojome |_+_| (pridėti su pakeisti) parinktį anksčiau, norėdami pridėti naujų modulių į biblioteką. Kai naudojame jį su moduliu, kuris jau yra bibliotekoje, |_+_| pakeis seną versiją nauja. |_+_| (indekso) parinktis atnaujins bibliotekos rodyklę ir |_+_| (daugiakalbis) parinktis padarys |_+_| papasakok, ką jis padarė.

gcc

Šį kartą |_+_| praneša, kad pakeitė modulį cipher_version.o. R reiškia pakeistas.

Naudojant atnaujintą cipher_version() funkciją

Turėtume naudoti pakeistą biblioteką ir patikrinti, ar ji veikia.

Skelbimas

Bibliotekos failus nukopijuosime į bandomąjį katalogą.

test

Pakeisime į bandymų katalogą.

-v

Turime dar kartą sudaryti savo bandomąją programą naudodami naująją biblioteką.

ar

O dabar galime išbandyti savo programą.

ar

Bandymo programos rezultatas yra toks, kokio ir tikėjomės. Versijos eilutėje rodomas teisingas versijos numeris, o šifravimo ir iššifravimo procedūros veikia.

Modulių ištrynimas iš bibliotekos

Po viso to atrodo gėda, bet ištrinkime cipher_version.o failą iš bibliotekos failo.

Norėdami tai padaryti, naudosime |_+_| (ištrinti) parinktis. Taip pat naudosime |_+_| (verbose) parinktis, kad |_+_| pasakoja, ką padarė. Taip pat įtrauksime |_+_| (indekso) parinktis atnaujinti rodyklę bibliotekos faile.

-t

Skelbimas

|_+_| praneša, kad pašalino modulį. D reiškia ištrintą.

Jei paklaustume |_+_| Norėdami išvardyti modulius bibliotekos faile, pamatysime, kad grįžtame prie dviejų modulių.

cipher_version()

Jei ketinate ištrinti modulius iš bibliotekos, nepamirškite pašalinti jų apibrėžimo iš bibliotekos antraštės failo.

Pasidalinkite savo kodu

Bibliotekos leidžia dalytis kodu praktiškai, bet privačiai. Visi, kuriems suteikiate bibliotekos failą ir antraštės failą, gali naudoti jūsų biblioteką, tačiau tikrasis šaltinio kodas lieka privatus.

Linux komandos
Failai deguto · pv · katė · tac · chmod · sukibimas · skirt · sed · Su · vyras · pastūmėtas · popd · fsck · testinis diskas · sek · fd · pandoc · CD · $PATH · awk · prisijungti · jq · sulankstyti · unikalus · Journalctl · uodega · valstybė · ls · fstab · išmetė · mažiau · chgrp · chown · rev · žiūrėk · stygos · tipo · pervadinti · užtrauktukas · išpakuokite · kalnas · umount · diegti · fdisk · mkfs · rm · rmdir · rsync · df · gpg · mes · nano · mkdir · · ln · pleistras · Paversti · rclone · susmulkinti · SRM
Procesai slapyvardis · ekranas · viršuje · malonu · renicija · progresas · trasa · sistema · tmux · chsh · istorija · adresu · partija · Laisvas · kurios · dmesg · usermod · ps · chroot · xargs · tty · rausvas · lsof · vmstat · laikas baigėsi · siena · taip · nužudyti · miegoti · sudo · jo · laikas · sugrupuoti · usermod · grupėse · lshw · išjungti · paleisti iš naujo · sustabdyti · išjungti · passwd · lscpu · crontab · data · bg · fg
Tinklo kūrimas netstat · ping · traceroute · ip · ss · Kas yra · fail2ban · bmon · tu · pirštu · nmap · ftp · garbanoti · wget · PSO · kas aš esu · Į · iptables · ssh-keygen · ufw

SUSIJĘS: Geriausi Linux nešiojamieji kompiuteriai kūrėjams ir entuziastams

SKAITYTI KITAS
  • › 5 svetainės, kurias turėtų pažymėti kiekvienas „Linux“ vartotojas
  • › Kompiuterio aplankas yra 40: kaip „Xerox Star“ sukūrė darbalaukį
  • › Kas yra MIL-SPEC apsauga nuo kritimo?
  • › Kaip rasti „Spotify“ supakuotą 2021 m
  • › „Microsoft Excel“ funkcijos ir formulės: koks skirtumas?
  • & rsaquo; 2021 m. kibernetinis pirmadienis: geriausi techniniai pasiūlymai
Dave Dave'as McKay'us
Dave'as McKay'us pirmą kartą naudojo kompiuterius, kai buvo madinga perforuoto popieriaus juosta, ir nuo tada jis programuoja. Daugiau nei 30 metų IT pramonėje jis dabar yra visą darbo dieną dirbantis technologijų žurnalistas. Per savo karjerą jis dirbo laisvai samdomu programuotoju, tarptautinės programinės įrangos kūrimo komandos vadovu, IT paslaugų projektų vadovu, o pastaruoju metu – duomenų apsaugos pareigūnu. Jo raštą paskelbė howtogeek.com, cloudsavvyit.com, itenterpriser.com ir opensource.com. Dave'as yra Linux evangelistas ir atvirojo kodo advokatas.
Skaityti visą biografiją

Įdomios Straipsniai