Shell-Eingabeaufforderung auf einem Linux-Laptop

Fatmawati Achmad Zaenuri/Shutterstock.com

Verwenden Sie Linuxs |_+_| Befehl zum Erstellen von Funktionsbibliotheken bei der Entwicklung von Software. Dieses Tutorial zeigt Ihnen, wie Sie eine statische Bibliothek erstellen, ändern und in einem Programm verwenden, einschließlich Beispielcode.



Die |_+_| Command ist ein echter Veteran—es gibt es schon seit 1971. Der Name |_+_| verweist auf den ursprünglichen Verwendungszweck des Werkzeugs, der Archivdateien erstellen . Eine Archivdatei ist eine einzelne Datei, die als Container für andere Dateien fungiert. Manchmal für viele andere Dateien. Dateien können dem Archiv hinzugefügt, entfernt oder daraus extrahiert werden. Leute, die nach dieser Art von Funktionalität suchen, wenden sich nicht mehr an |_+_|. Diese Rolle wurde von anderen Dienstprogrammen wie |_+_| übernommen.

Die |_+_| Der Befehl wird jedoch immer noch für einige spezielle Zwecke verwendet. |_+_| wird verwendet, um statische Bibliotheken zu erstellen. Diese werden in der Softwareentwicklung verwendet. Und |_+_| wird auch verwendet, um Paketdateien wie die .deb-Dateien zu erstellen, die in der Debian-Linux-Distribution und ihren Derivaten wie Ubuntu verwendet werden.

Wir werden die Schritte durchgehen, die zum Erstellen und Ändern einer statischen Bibliothek erforderlich sind, und zeigen, wie die Bibliothek in einem Programm verwendet wird. Dazu benötigen wir eine Anforderung, die die statische Bibliothek erfüllen muss. Der Zweck dieser Bibliothek besteht darin, Textstrings zu codieren und codierten Text zu decodieren.

Bitte beachten Sie, dass dies ein schneller und schmutziger Hack zu Demonstrationszwecken ist. Verwenden Sie diese Verschlüsselung nicht für Wertgegenstände. Es ist das einfachste der Welt Ersatzchiffre , wobei A zu B wird, aus B zu C wird und so weiter.

VERBUNDEN: So komprimieren und extrahieren Sie Dateien mit dem tar-Befehl unter Linux

Die Funktionen cipher_encode() und cipher_decode()

Wir arbeiten in einem Verzeichnis namens library und erstellen später ein Unterverzeichnis namens test.

Anzeige

Wir haben zwei Dateien in diesem Verzeichnis. In einer Textdatei namens cipher_encode.c haben wir die |_+_| Funktion:

ar

Das entsprechende |_+_| Die Funktion befindet sich in einer Textdatei namens cipher_decode.c:

ar

Dateien, die Programmieranweisungen enthalten, werden Quellcodedateien genannt. Wir werden eine Bibliotheksdatei namens libcipher.a erstellen. Es enthält die kompilierten Versionen dieser beiden Quellcodedateien. Wir erstellen auch eine kurze Textdatei namens libcipher.h. Dies ist eine Header-Datei, die die Definitionen der beiden Funktionen in unserer neuen Bibliothek enthält.

Jeder, der die Bibliothek und die Header-Datei besitzt, kann die beiden Funktionen in seinen eigenen Programmen verwenden. Sie müssen das Rad nicht neu erfinden und die Funktionen neu schreiben; sie nutzen einfach die Exemplare unserer Bibliothek.

Kompilieren der Dateien cipher_encode.c und cipher_decode.c

Um die Quellcodedateien zu kompilieren, verwenden wir |_+_|, die Standard-GNU-Compiler . Die |_+_| (kompilieren, kein Link) Option sagt |_+_| um die Dateien zu kompilieren und dann zu stoppen. Es erzeugt aus jeder Quellcodedatei eine Zwischendatei, die als Objektdatei bezeichnet wird. Die |_+_| linker nimmt normalerweise alle Objektdateien und verknüpft sie zu einem ausführbaren Programm. Wir überspringen diesen Schritt, indem wir |_+_| . verwenden Möglichkeit. Wir brauchen nur die Objektdateien.

Anzeige

Lassen Sie uns überprüfen, ob wir die Dateien haben, von denen wir denken, dass wir sie haben.

ar

Die beiden Quellcodedateien sind in diesem Verzeichnis vorhanden. Verwenden wir |_+_| um sie zu Objektdateien zu kompilieren.

ar tar

Es sollte keine Ausgabe von |_+_| . geben wenn alles gut geht.

Dadurch werden zwei Objektdateien mit demselben Namen wie die Quellcodedateien generiert, jedoch mit der Erweiterung .o. Dies sind die Dateien, die wir der Bibliotheksdatei hinzufügen müssen.

ar

Erstellen der Bibliothek libcipher.a

Um die Bibliotheksdatei zu erstellen, die eigentlich eine Archivdatei ist, verwenden wir |_+_|.

Wir verwenden die |_+_| (create) Option zum Erstellen der Bibliotheksdatei, die |_+_| (Hinzufügen mit Ersetzen) zum Hinzufügen der Dateien zur Bibliotheksdatei und die |_+_| (index) Option, um einen Index der Dateien in der Bibliotheksdatei zu erstellen.

Anzeige

Wir werden die Bibliotheksdatei libcipher.a aufrufen. Wir geben diesen Namen in der Befehlszeile zusammen mit den Namen der Objektdateien an, die wir der Bibliothek hinzufügen werden.

ar

Wenn wir die Dateien im Verzeichnis auflisten, sehen wir, dass wir jetzt eine Datei libcipher.a haben.

ls -l

Wenn wir die |_+_| . verwenden (Tabellen-)Option mit |_+_| Wir können die Module in der Bibliotheksdatei sehen.

ar

Erstellen der Header-Datei libcipher.h

Die Datei libcipher.h wird in jedes Programm aufgenommen, das die Bibliothek libcipher.a verwendet. Die Datei libcipher.h muss die Definition der Funktionen enthalten, die sich in der Bibliothek befinden.

Um die Header-Datei zu erstellen, müssen wir die Funktionsdefinitionen in a . eingeben Texteditor wie gedit . Benennen Sie die Datei libcipher.h und speichern Sie sie im selben Verzeichnis wie die Datei libcipher.a.

cipher_encode()

Verwenden der libcipher-Bibliothek

Der einzig sichere Weg, unsere neue Bibliothek zu testen, besteht darin, ein kleines Programm zu schreiben, um sie zu verwenden. Zuerst erstellen wir ein Verzeichnis namens test.

cipher_decode()Anzeige

Wir kopieren die Bibliotheks- und Header-Dateien in das neue Verzeichnis.

gcc

Wir wechseln in das neue Verzeichnis.

-c

Lassen Sie uns überprüfen, ob unsere beiden Dateien hier sind.

gcc

Wir müssen ein kleines Programm erstellen, das die Bibliothek verwenden und beweisen kann, dass es wie erwartet funktioniert. Geben Sie die folgenden Textzeilen in einen Editor ein. Speichern Sie den Inhalt des Editors in einer Datei namens test.c im Prüfung Verzeichnis.

gcc

Der Programmablauf ist ganz einfach:

  • Es enthält die Datei libcipher.h, damit es die Definitionen der Bibliotheksfunktionen sehen kann.
  • Es erstellt eine Zeichenfolge namens text und speichert die Worte Kyoceramita liebt Linux darin.
  • Es gibt diese Zeichenfolge auf dem Bildschirm aus.
  • es nennt die |_+_| -Funktion zum Kodieren der Zeichenfolge und gibt die kodierte Zeichenfolge auf dem Bildschirm aus.
  • Es ruft |_+_| um den String zu dekodieren und gibt den dekodierten String auf dem Bildschirm aus.

Um die |_+_| . zu generieren Programm müssen wir das Programm test.c kompilieren und in die Bibliothek einbinden. Die |_+_| (Ausgabe) Option sagt |_+_| was das ausführbare Programm nennen soll, das es generiert.

-c

wie man gelöschte bilder wiederherstellt

Wenn |_+_| bringt Sie stillschweigend zur Eingabeaufforderung zurück, alles ist gut. Jetzt testen wir unser Programm. Moment der Wahrheit:

gcc

Und wir sehen die erwartete Leistung. Die |_+_| Programm druckt den Klartext druckt den verschlüsselten Text und druckt dann den entschlüsselten Text. Es verwendet die Funktionen unserer neuen Bibliothek. Unsere Bibliothek arbeitet.

Erfolg. Aber warum hier aufhören?

Ein weiteres Modul zur Bibliothek hinzufügen

Fügen wir der Bibliothek eine weitere Funktion hinzu. Wir fügen eine Funktion hinzu, mit der der Programmierer die Version der verwendeten Bibliothek anzeigen kann. Wir müssen die neue Funktion erstellen, kompilieren und die neue Objektdatei zur vorhandenen Bibliotheksdatei hinzufügen.

Anzeige

Geben Sie die folgenden Zeilen in einen Editor ein. Speichern Sie den Inhalt des Editors in einer Datei namens cipher_version.c im Bücherei Verzeichnis.

gcc

Wir müssen die Definition der neuen Funktion zur Header-Datei libcipher.h hinzufügen. Fügen Sie am Ende dieser Datei eine neue Zeile hinzu, sodass sie wie folgt aussieht:

ar

Speichern Sie die geänderte Datei libcipher.h.

Wir müssen die Datei cipher_version.c kompilieren, damit wir eine Objektdatei cipher_version.o haben.

-c

Dadurch wird eine Datei cipher_version.o erstellt. Wir können die neue Objektdatei mit dem folgenden Befehl zur Bibliothek libcipher.a hinzufügen. Die |_+_| (ausführliche) Option macht das normalerweise stumme |_+_| Sagen Sie uns, was es getan hat.

-r

Die neue Objektdatei wird der Bibliotheksdatei hinzugefügt. |_+_| druckt eine Bestätigung aus. Das a bedeutet hinzugefügt.

Wir können die |_+_| . verwenden (Tabelle) Option, um zu sehen, welche Module sich in der Bibliotheksdatei befinden.

-s

Anzeige

Es gibt jetzt drei Module in unserer Bibliotheksdatei. Nutzen wir die neue Funktion.

Verwenden der Funktion cipher_version().

Entfernen wir die alte Bibliothek und Header-Datei aus dem Testverzeichnis, kopieren Sie die neuen Dateien und wechseln Sie dann zurück in das Testverzeichnis.

Wir werden die alten Versionen der Dateien löschen.

-t

Wir kopieren die neuen Versionen in das Testverzeichnis.

ar

Wir wechseln in das Testverzeichnis.

cipher_encode()

Und jetzt können wir das Programm test.c so modifizieren, dass es die neue Bibliotheksfunktion verwendet.

Wir müssen dem Programm test.c eine neue Zeile hinzufügen, die |_+_| . aufruft Funktion. Wir platzieren dies vor dem ersten |_+_| Linie.

cipher_decode()

Speichern Sie dies als test.c. Wir können es jetzt kompilieren und testen, ob die neue Funktion betriebsbereit ist.

test

Lassen Sie uns die neue Version von |_+_| ausführen:

Die neue Funktion funktioniert. Wir können die Version der Bibliothek am Anfang der Ausgabe von |_+_| sehen.

Aber es kann ein Problem geben.

Ersetzen eines Moduls in der Bibliothek

Dies ist nicht die erste Version der Bibliothek; es ist das zweite. Unsere Versionsnummer ist falsch. Die erste Version hatte kein |_+_| Funktion darin. Dieser tut es. Dies sollte also Version 0.0.2 sein. Wir müssen die |_+_| . ersetzen Funktion in der Bibliothek mit einer korrigierten.

Zum Glück |_+_| macht das ganz einfach.

Anzeige

Bearbeiten wir zunächst die Datei cipher_version.c im Bücherei Verzeichnis. Ändern Sie den Text Version 0.0.1 Alpha in Version 0.0.2 Alpha. Es sollte so aussehen:

-o

Speichern Sie diese Datei. Wir müssen es erneut kompilieren, um eine neue Objektdatei cipher_version.o zu erstellen.

gcc

Jetzt werden wir ersetzen das vorhandene cipher_version.o-Objekt in der Bibliothek mit unserer neu kompilierten Version.

Wir haben die |_+_| . verwendet (Hinzufügen mit ersetzen) Option vor, um der Bibliothek neue Module hinzuzufügen. Wenn wir es mit einem Modul verwenden, das bereits in der Bibliothek vorhanden ist, wird |_+_| ersetzt die alte Version durch die neue. Die |_+_| (index) Option aktualisiert den Bibliotheksindex und die |_+_| (ausführliche) Option macht |_+_| Sagen Sie uns, was es getan hat.

gcc

Diesmal |_+_| meldet, dass es das Modul cipher_version.o ersetzt hat. Das r bedeutet ersetzt.

Verwenden der aktualisierten cipher_version()-Funktion

Wir sollten unsere modifizierte Bibliothek verwenden und überprüfen, ob sie funktioniert.

Anzeige

Wir werden die Bibliotheksdateien in das Testverzeichnis kopieren.

was ist tar gz datei
test

Wir wechseln in das Testverzeichnis.

-v

Wir müssen unser Testprogramm mit unserer neuen Bibliothek neu kompilieren.

ar

Und jetzt können wir unser Programm testen.

ar

Die Ausgabe des Testprogramms entspricht unseren Erwartungen. Die korrekte Versionsnummer wird in der Versionszeichenfolge angezeigt und die Verschlüsselungs- und Entschlüsselungsroutinen funktionieren.

Löschen von Modulen aus einer Bibliothek

Es scheint nach all dem eine Schande, aber löschen wir die Datei cipher_version.o aus der Bibliotheksdatei.

Dazu verwenden wir die |_+_| (löschen) Option. Wir verwenden auch die |_+_| (ausführliche) Option, sodass |_+_| sagt uns, was es getan hat. Wir werden auch die |_+_| (index) Option, um den Index in der Bibliotheksdatei zu aktualisieren.

-t

Anzeige

|_+_| meldet, dass das Modul entfernt wurde. Das d bedeutet gelöscht.

Wenn wir fragen |_+_| Um die Module in der Bibliotheksdatei aufzulisten, sehen wir, dass wir wieder bei zwei Modulen sind.

cipher_version()

Wenn Sie Module aus Ihrer Bibliothek löschen möchten, denken Sie daran, deren Definition aus der Headerdatei der Bibliothek zu entfernen.

Teile deinen Code

Bibliotheken machen Code auf praktische, aber private Weise gemeinsam nutzbar. Jeder, dem Sie die Bibliotheksdatei und die Headerdatei überlassen, kann Ihre Bibliothek verwenden, aber Ihr eigentlicher Quellcode bleibt privat.

Linux-Befehle
Dateien Teer · pv · Katze · tac · chmod · Griff · unterschied · sed · Mit · Mann · geschoben · popd · fsck · Testdisk · seq · fd · pandoc · CD · $PFAD · awk · beitreten · jq · falten · einzigartig · Journalctl · Schwanz · Zustand · ls · fstab · rauswerfen · weniger · chgrp · chown · rev · suchen · Saiten · Typ · umbenennen · Postleitzahl · entpacken · montieren · ummount · Installieren · fdisk · mkfs · rm · rmdir · rsync · df · gpg · wir · Nano · mkdir · von · ln · Patch · Konvertieren · rclon · Fetzen · SRM
Prozesse alias · Bildschirm · oben · nett · renice · Fortschritt · strace · System · tmux · chsh · Geschichte · beim · Charge · kostenlos · die · dmesg · Benutzermod · ps · chroot · xargs · tty · kleiner Finger · lsof · vmstat · Auszeit · Mauer · ja · töten · Schlaf · sudo · seine · Zeit · groupadd · Benutzermod · Gruppen · lshw · stilllegen · neu starten · halt · ausschalten · passwd · lscpu · crontab · Datum · bg · fg
Vernetzung netstat · Klingeln · Traceroute · ip · ss · Wer ist · fail2ban · bmon · Sie · Finger · nmap · ftp · Locken · wget · Wer · Wer bin ich · In · iptables · ssh-keygen · ufw

VERBUNDEN: Beste Linux-Laptops für Entwickler und Enthusiasten

WEITER LESEN
  • › 5 Websites, die jeder Linux-Benutzer mit einem Lesezeichen versehen sollte
  • › Der Computerordner ist 40: Wie Xerox Star den Desktop erstellte
  • › Was ist MIL-SPEC Fallschutz?
  • › So finden Sie Ihr Spotify Wrapped 2021
  • › Funktionen vs. Formeln in Microsoft Excel: Was ist der Unterschied?
  • Cyber ​​Monday 2021: Die besten Tech-Deals