Ungefähr c

Ungefähr c

Einführung

Was Sie gerade lesen, ist der Beginn einer Reihe von Artikeln, die sich der Entwicklung auf Linux -Systemen widmen,. Mit geringfügigen Änderungen (falls vorhanden) können Sie dieses Wissen jedoch nutzen, indem Sie unsere Serie auf jedem anderen System lesen, das dieselben Tools verwendet (Openindiana, BSD…). Dieser erste Artikel wird schrittweise mit den Feinheiten des Schreibens von C -Code unter Linux abwickeln. Es wird erwartet, dass Sie grundlegende Programmierkenntnisse haben, entweder auf Linux/UNIX -Systemen oder auf anderen Plattformen. Die Idee ist, dass Sie die Grundlagen der Programmierung kennen, wie eine Variable oder wie man eine Struktur definiert. Obwohl Sie diese Informationen aus diesem Artikel erhalten, werden wir nicht viel auf Konzepten auf Anfängernebene bestehen. Ein Wort der Warnung: Wir werden nicht alles einbeziehen, was es über C zu erzählen gibt, denn das würde viel Platz einnehmen, und natürlich wissen wir nicht alles über C.

Warum c?

Einige von Ihnen könnten argumentieren, dass C nicht die beste Sprache auf Anfängerebene aller Zeiten ist. Einverstanden, aber auch hier haben Sie für einen ein grundlegendes Programmierkenntnis. Zweitens sind C und Unix und Linux danach eng miteinander verbunden, dass es nur natürlich schien, unsere Entwicklungsreihe mit C zu starten. Von dem Kernel, von dem ein wesentlicher Teil davon in C geschrieben ist, bis hin zu vielen alltäglichen Benutzer-Land-Anwendungen, wird C massiv auf Ihrem Linux-System verwendet. Zum Beispiel basiert GTK auf C. Wenn Sie also GNOME- oder XFCE-Anwendungen verwenden, verwenden Sie C-basierte Anwendungen. C ist eine alte, gut etablierte Programmiersprache, wichtiges Werkzeug in vielen Teilen der IT-Welt, von eingebetteten Systemen bis hin zu Mainframes. Daher ist es nur fair anzunehmen, dass C -Fähigkeiten nicht nur Ihren Lebenslauf bereichern, sondern auch Ihnen helfen, viele Probleme in Ihrem Linux -System zu lösen, das nur dann, wenn Sie dies ernst nehmen und viel üben, indem Sie C - Code.

Ungefähr c

Geschichte

C ist mehr als 40 Jahre alt, mit Anfängen in Bell Labs mit Brian Kernighan, Dennis Ritchie und Ken Thompson als „übliche Verdächtige.„Unix Development und Cs Evolution sind, wie wir sagten, eng miteinander verbunden, weil Unix ursprünglich in der Versammlung geschrieben wurde, aber das hatte viele Mängel. Daher starteten die Entwickler beim Umzug in die PDP-11 als Haupthardwareplattform C als Kernsprache für Unix. 1978 schrieben Kernighan und Ritchie: „The C Programming Language“, ein Buch, das heute vor 20 Jahren war: Das Buch über C -Programmierung. Wir empfehlen, dass Sie es bekommen.



Einstufung

Es gibt immer Menschen, die sich für die Klassifizierung von Dingen interessieren, und natürlich ist das Programmieren nicht anders. Abgesehen von Scherzen, da wir am Anfang sind, dachten wir, Sie sollten wissen, dass C eine prozedurale strukturierte Programmiersprache mit schwacher Typen ist. Was wir gerade in Englisch gesagt haben, ist, dass C Verfahren verwendet (der übliche Name, der von C -Programmierern verwendet wird und der wir auch verwenden, ist jedoch Funktionen), dass es einen strukturierten Ansatz verwendet (denken Schließlich unterstützt es implizite Typkonvertierungen. Wenn Sie nicht wissen, was die oben genannten bedeutet, befürchten Sie nicht, Sie werden es herausfinden!

Unser Vorgehen

Dieser Artikel, der nur der einleitende Teil ist, und wir werden regelmäßig nächste Teile veröffentlichen, in denen jedes Kapitel mit einem wichtigen Teil der Sprache umgehen wird: Variablen, Zeiger, Strukturen usw. (Abonnieren Sie RSS -Feed, wenn Sie dies noch nicht getan haben. Wir werden es kompilieren und dann für Debian und Fedora Systems verpacken. Der Entwickler von Debian, Andree Leidenfrost, zeigt Ihnen dann, wie Sie unser neues Paket in das Debian -Repository einreichen und sicherstellen, dass wir alle Paketanforderungen respektieren, die in Debian Distribution zugelassen werden sollen (danke unde). Wir empfehlen Ihnen, unsere Beispiele in Ihrem System auszuprobieren, sich etwas Zeit zu nehmen, um den Code zu untersuchen und zu versuchen, eigene Änderungen vorzunehmen.

Die notwendigen Werkzeuge

Lassen Sie uns vor Beginn sicherstellen, dass alle wichtigen Tools auf Ihrem Linux -System installiert sind. Sie benötigen einen Compiler, nämlich GCC, das Binutils -Paket und einen Texteditor oder eine IDE. Unabhängig davon, ob Sie Texteditor oder eine IDE -IDE wählen. Abhängig von Ihren von Ihnen verwendeten Linux -Verteilungs- und Installationsoptionen verfügen Sie möglicherweise über die erforderlichen Tools möglicherweise bereits installiert. Wir haben ein winziges Skript zusammengestellt, um zu sehen, ob alle obligatorischen Entwicklungstools installiert sind:

#!/bin/sh gcc -v wenn [$? != 0]; Dann ist Echo "GCC nicht installiert!"fi ld -v wenn [$? != 0]; dann echo "Bitte installieren Sie Binutils!"Fi 


Speichern Sie dieses Skript als Devtoolsscheck.sh, renn es:

 $ sh Devtoolsscheck.Sch 

Auf meiner Maschine bekomme ich die folgende Ausgabe:

$ Sh Devtools.sh mit integrierten Spezifikationen. Sammeln_gcc = gcc sammeln_lto_wrapper =/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.6.1/LTO-Wrapper Ziel: x86_64-linux-gnu konfiguriert mit:…/src/configure -v--with-pkgversion = 'debian 4.6.1-4 '--with-bugurl = Datei: /// usr/share/doc/gcc-4.6/Readme.Bugs-Ensable-Languages ​​= C, C ++, FORTRAN, OBJC, OBJ-C ++, Go-Prefix =/usr-Program-Suffix = -4.6-ANTABLE-SHARDE-ANBABLE-Multiarch [Konfigurationsoptionen Sniped] Thread-Modell: POSIX GCC Version 4.6.1 (Debian 4.6.1-4) GNU LD (GNU Binutils für Debian) 2.21.52.20110606 

Warum Sie Binutils -Binärdateien und GCC brauchen, werden Sie in Kürze sehen. Konzentrieren wir uns nun ein wenig auf die Frage „Editor vs IDE“.

Das einzige, was wir Ihnen in dieser Hinsicht beraten werden, ist: "Verwenden Sie das, was Sie sich wohl fühlen, und ignorieren Sie, was andere Ihnen sagen.". Diese Angelegenheit ist sehr subjektiv und hängt von vielen Variablen ab. Wenn Sie beispielsweise auf anderen Betriebssystemen entwickeln (oder uns entwickelt), werden Sie möglicherweise an eine IDE gewöhnt. Sie finden viele gute IDES unter Linux, einschließlich Eclipse, Geany, Kdevelop oder Anjuta. Versuchen Sie, sie zu installieren, um zu sehen, was Sie besser geeignet finden. Auf der anderen Seite gibt es hier auch viele Optionen: VI (M), EMACs, Kate, Nano, Jed usw. Durch die Suche im Internet finden Sie viele Diskussionen darüber, was der beste Editor ist. Wir sagen, einige von ihnen installieren und finden heraus, was zu Ihnen am besten passt. Sie sind der einzige Richter davon, und es wird ein Tool sein, das Sie häufig verwenden. Nehmen Sie sich also Ihre Zeit, verwenden Sie es, lesen. Unabhängig von Ihrer Wahl gehen wir davon aus, dass Sie Ihre Wahl in Bezug auf das Bearbeitungstool getroffen haben und mit seiner Verwendung vertraut sind.

Der Zusammenstellungsprozess

In einfachen Worten startet dieser Vorgang mit dem von Ihnen geschriebenen Quellcode und wenn alles gut geht, ist das Ergebnis eine ausführbare Binär- oder eine Bibliothek. Unnötig zu erwähnen, dass es noch mehr gibt, aber es ist wichtig, dass Sie den obigen Satz verstehen, bevor Sie weitermachen. Sie müssen jetzt nicht alle Konzepte auswendig lernen, da sie später klarer werden. Zu diesem Zeitpunkt ist es nur wichtig, die allgemeine Idee zu bekommen.

Nehmen wir an, wir haben den Quellcode schriftlich und jetzt möchten wir, dass ein Compiler ihn verarbeitet und uns die ausführbare Binärdatum geben. Der Workflow dieses Prozesses wird zu Ihrem Recht veranschaulicht.

Bitte beachten Sie, dass dies nur für C anwendbar ist, eine kompilierte Sprache, im Gegensatz zu interpretierten Sprachen (Perl, Python, Shell), und wir werden uns ausschließlich auf GCC und Freunde für den Rest unseres Leitfadens beziehen. Wie die Abbildung zu Ihrer Rechten zeigt Vorverarbeitungsanweisungen (In C beginnen sie mit einem Hash) und wenn alles in Ordnung aussieht, ist das Ergebnis eine von Compiler verständliche Ausgabe. Der Compiler (GCC) erledigt die ganze harte Arbeit, einschließlich der Codeoptimierung für die zugrunde liegende Hardware (wenn Sie an Compiler-Theorie oder Cross-Compilation interessiert sind, gibt es viele gute Bücher zu diesem Thema, aber wir nehmen hier eine Anfängerstufe an). Das Ergebnis ist Assembler -Code, in der eng an der Maschine, aus der die Binärdateien generiert werden (ebenso wie das Tool). Am Ende verknüpft „LD“ abhängig von den Optionen und dem Code die ausführbare Datei mit allen erforderlichen Bibliotheken und voila! Das Endergebnis: Ihr Programm. Wenn Sie alle resultierenden Zwischendateien sehen möchten, wird GCC -Flag -Save -Temps Ihnen dabei helfen, dies zu tun. Wir empfehlen Ihnen, zumindest sparsam die GCC -Handbuchseite zu lesen, und stellen Sie sicher, dass Ihr Compiler uns auf dem neuesten Stand ist. Sie gewöhnen Sie sich an übliche GCC -Flags, indem Sie unsere Beispiele lesen, aber Sie werden erwartet, dass Sie wissen, was sie tun, und nicht nur Befehle kopieren und einfügen, die Sie auf dem Bildschirm sehen.



Beispiel C -Programm

Jedes Programmier-Tutorial für Selbstachtung beginnt mit einem „Hallo, Welt“ -Programm. Dieses Programm tut nichts anderes als „Hallo, Welt!”Auf dem Bildschirm und beendet sich dann. Es wird verwendet, um die grundlegende Struktur eines Programms und einige wesentliche Konzepte zu veranschaulichen. Also, ohne weiteres, ist es hier.

#enthalten  / * Dies ist ein Kommentar */// int main () printf ("Hallo, Welt!\N"); zurückkehren 0; 

Lassen Sie uns nun die Programmlinie nach Linie analysieren und sehen, was jede Zeile darstellt. Der erste ist eine Präprozessor -Richtlinie (siehe oben), die nach dem fragt stdio.H Datei, die die Definition für die liefert printf Funktion. Header -Dateien sind Dateien, die normalerweise verschiedene Definitionen (Funktionen, Variablen…) enthalten und machen .c Dateien weniger überfüllt. Alles was für eine Quelldatei (.c) wird eine benötigen #enthalten Aussage und möglicherweise ein Argument an den Linker. Alles, was in der mitgelieferten Header -Datei definiert ist, ist in Ihrem Quellcode verfügbar.

hauptsächlich() ist eine obligatorische Funktion in jedem C -Programm. Wie der Name sagt, die hauptsächlich Aktivität wird hier geschehen, unabhängig davon, wie viele Funktionen Sie definiert haben. int main () bedeutet, dass diese Funktion keine Argumente (die leeren Klammern) enthält und dass sie eine Ganzzahl zurückgibt (die Initiale int). All dies wird später besprochen. Das Wichtigste hier ist das printf Funktion, die unseren Text als einen nimmt Streit und zeigt es an. “\N”Bedeutet„ newline “und es ist das Äquivalent zur Verwendung der Eingabetaste (oder ^m). Es wird als Escape -Sequenz bezeichnet und alle Fluchtsequenzen in C beginnen mit „\“. Um sich beispielsweise besser zu verstehen, was eine Fluchtsequenz ist, stellen Sie sich vor, Sie schreiben HTML -Code und müssen eine "drucken"<” character. HTML's syntax uses angle brackets to define HTML tags, so chances are your bracket will be interpreted as HTML code instead of being displayed. So, what to do? We escape it with “<” and it will appear properly. Just the same, if you want to insert a newline character, you can't type it directly, as the compiler could care less if you write your program on a single line or not and therefore you you need to escape your new line character with “\N“.

Rückkehr 0 sagt dem Compiler, dass alles in Ordnung ist und die Ausführung von hauptsächlich() Die Funktion endet dort. Das liegt daran, dass 0 der Code für eine erfolgreiche Ausführung ist, während Werte, die größer als 0 (Ganzzahlen) sind. Die lockigen Zahnspangen, die die Hauptfunktion beginnen und beenden hauptsächlich(), bleibt drin hauptsächlich(). Möglicherweise haben Sie die Semikolons am Ende der Aussagen bemerkt: Sie sind als Zeichen obligatorisch, dass die aktuelle Erklärung dort endete, sie dürfen jedoch nicht in Preprozessor -Richtlinien verwendet werden #enthalten.



Zusammenstellung

Die Zusammenstellung wird in den kommenden Teilen dieses Handbuchs genauer erläutert. Für die Vollständigkeit ist hier jedoch ein einfaches Beispiel für die Befehlszeile, wie Sie unser erstes „Hello World“ -P -Programm kompilieren und ausführen können:

$ gcc -o hallo hallo.C $ ./Hallo Hallo, Welt!

Abschluss

Wir hoffen. Teil 2 wird mit einem Vergleich zwischen C und anderen Programmiersprachen zu tun, um denjenigen zu helfen, die bereits Erfahrung in der Entwicklung haben.

Hier ist, was Sie als nächstes erwarten können:

  • ICH. C Entwicklung unter Linux - Einführung
  • Ii. Vergleich zwischen C und anderen Programmiersprachen
  • III. Typen, Operatoren, Variablen
  • Iv. Ablaufsteuerung
  • V. Funktionen
  • Vi. Zeiger und Arrays
  • Vii. Strukturen
  • Viii. Grundlegende I/O
  • Ix. Codierungsstil und Empfehlungen
  • X. Ein Programm erstellen
  • Xi. Verpackung für Debian und Fedora
  • Xii. Ein Paket in den offiziellen Debian -Repositories erhalten

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Dinge zu tun nach der Installation Ubuntu 22.04 Jammy Quallen…
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Installieren Sie Arch Linux in VMware Workstation
  • Dinge zu installieren auf Ubuntu 22.04
  • Linux -Download
  • Grundlegende Linux -Befehle
  • Linux -Befehle: Top 20 wichtigste Befehle, die Sie benötigen, um…
  • Ubuntu 20.04 Leitfaden