Environ c

Environ c

Introduction

Ce que vous lisez, c'est le début de la série d'articles dédiés au développement sur les systèmes Linux. Cependant, avec des modifications mineures (le cas échéant), vous pourrez utiliser ces connaissances que vous obtiendrez en lisant notre série sur tout autre système qui utilise les mêmes outils (OpenIndiana, BSD…). Ce premier article traitera progressivement les subtilités de l'écriture du code C sur Linux. Vous devez avoir des connaissances de programmation de base, soit sur les systèmes Linux / Unix, soit sur d'autres plates-formes. L'idée est que vous devez connaître les bases de la programmation, comme ce qu'est une variable ou comment définir une structure. Même si vous obtiendrez ces informations de cet article, nous n'insisterons pas beaucoup sur les concepts de niveau débutant. Un mot d'avertissement: nous n'inclurons pas tout ce qu'il y a à dire sur C, car cela prendrait beaucoup d'espace et bien sûr, nous ne savons pas vraiment sur C.

Pourquoi c?

Certains d'entre vous pourraient affirmer que C n'est pas la meilleure langue au niveau débutant de tous les temps. D'accord, mais encore une fois, on s'attend à ce que vous ayez des connaissances de base en programmation, pour une. Deuxièmement, C et Unix, et Linux par la suite, sont intimement liés ensemble qu'il semblait naturel de commencer notre série de développement avec C. Du noyau, dont une partie substantielle est écrite en C, à de nombreuses applications de terres utilisateur quotidiennes, C est utilisé massivement sur votre système Linux. Par exemple, GTK est basé sur C, donc si vous utilisez des applications Gnome ou XFCE, vous utilisez des applications basées sur C. C est un ancien langage de programmation bien établi, outil vital dans de nombreuses parties du monde informatique, des systèmes intégrés aux mainframes. Par conséquent, il est juste de supposer que les compétences C non seulement enrichiront votre CV, mais ils vous aideront également à résoudre de nombreux problèmes sur votre système Linux, c'est-à-dire que si vous prenez cela au sérieux et que vous pratiquez beaucoup en lisant et en écrivant C code.

Environ c

Histoire

C a plus de 40 ans, avec des débuts à Bell Labs avec Brian Kernighan, Dennis Ritchie et Ken Thompson comme les «suspects habituels."Unix Development et C's Evolution sont intimement liés, comme nous l'avons dit, car Unix a été initialement écrit en assemblage, mais cela avait beaucoup de lacunes. Par conséquent, lors du passage au PDP-11 comme principale plate-forme matérielle, les développeurs ont commencé C en tant que langue de base pour Unix. En 1978, Kernighan et Ritchie ont écrit, «The C Programming Language», un livre qui est aujourd'hui comme il y a 20 ans: le livre sur la programmation C. Nous vous recommandons de vous l'obtenir.



Classification

Il y a toujours des gens qui désirent la classification des choses et bien sûr, la programmation n'est pas différente. Blague à part, puisque nous sommes au début, nous avons pensé que vous devriez savoir que C est un langage de programmation structuré procédural, avec une frappe faible. Ce que nous venons de dire, en anglais, c'est que C utilise des procédures (le nom habituel utilisé par les programmeurs C, et celui que nous utiliserons également, c'est cependant des fonctions), qu'il utilise une approche structurée (pensez des blocs de code) et Enfin, il prend en charge les conversions de type implicite. Si vous ne savez pas ce que signifie ce qui précède, n'ayez crainte, vous le découvrirez!

Notre approche

Cet article qui n'est que la partie d'introduction et nous publierons régulièrement les prochaines parties où chaque chapitre s'occupera d'une partie importante de la langue: variables, pointeurs, structures, etc. (Abonnez-vous à RSS Feed Si vous ne l'avez pas encore fait) À la fin de la partie théorique, nous vous montrerons un exemple pratique, pour lequel nous avons choisi Yest, un minuscule logiciel écrit par Kimball Hawkins (merci, Kimball). Nous allons le compiler, puis l'emballer pour les systèmes Debian et Fedora. Le développeur Debian, Andree Leidenfrost, vous montrera ensuite comment soumettre notre nouveau package dans le référentiel Debian, en vous assurant de respecter toutes les exigences du package à admettre à Debian Distribution (merci, Andree). Nous vous recommandons d'essayer nos exemples sur votre système, de prendre le temps d'examiner le code et d'essayer de faire vos modifications.

Les outils nécessaires

Avant de commencer, assurez-nous que tous les outils essentiels sont installés sur votre système Linux. Vous aurez besoin d'un compilateur, à savoir GCC, le package Binutils et un éditeur de texte ou un IDE. Que vous choisissiez l'éditeur de texte ou une sorte d'IDE dépend en grande partie de vos préférences, mais plus à ce sujet plus tard. Selon vos options de distribution et d'installation Linux que vous avez utilisées, vous avez peut-être déjà installé les outils nécessaires. Nous avons mis en place un petit script pour vous aider à voir si vous avez tous les outils de développement obligatoires:

#!/ bin / sh gcc -v si [$? != 0]; Puis écho "GCC n'est pas installé!"fi ld -v si [$? != 0]; puis écho "Veuillez installer des binutils!" Fi 


Enregistrez ce script sous le nom de Devtoolscheck.sh, exécutez-le:

 $ sh Devtoolscheck.shot 

Sur ma machine, je reçois la sortie suivante:

$ sh Devtools.sh utilisant des spécifications intégrées. Collect_gcc = gcc collection_lto_wrapper = / usr / lib / x86_64-linux-gnu / gcc / x86_64-linux-gnu / 4.6.1 / lto-wrapper Target: x86_64-linux-gnU configuré avec:… / src / configure -v --with-pkgversion = 'Debian 4.6.1-4 '--with-bugurl = fichier: /// usr / share / doc / gcc-4.6 / Readme.Bugs --Enable-Languages ​​= C, C ++, FORTRAN, OBJC, OBJ-C ++, Go --prefix = / USR --Program-Suffix = -4.6 - ENTAGE-RAGE - MODIFICATION DE CHILEUR DE CHILLE-MULTIARCH [Options de configuration: POSIX GCC Version 4.6.1 (Debian 4.6.1-4) GNU LD (GNU Binutils pour Debian) 2.21.52.20110606 

Pourquoi vous avez besoin de binaires de binutils et de GCC, vous verrez sous peu. Maintenant, concentrons-nous un peu sur la question «Editor vs ide».

La seule chose que nous vous conseillerons à cet égard est «Utilisez ce avec quoi vous vous sentez à l'aise et ne tenez pas compte de ce que les autres vous disent». Cette question est très subjective et cela dépend de nombreuses variables. Par exemple, si vous développez (ou utilisé pour vous développer) sur d'autres systèmes d'exploitation, vous pourriez être utilisé pour un IDE. Vous trouverez de nombreux bons ides sur Linux, y compris Eclipse, Geany, Kdevelop ou Anjuta. Essayez de les installer pour voir ce que vous trouvez plus approprié. D'un autre côté, si vous voulez aller à la manière simple de l'éditeur, il y a aussi beaucoup d'options ici: VI (M), Emacs, Kate, Nano, Jed et ainsi de suite. En recherchant sur Internet, vous trouverez de nombreuses discussions sur le meilleur éditeur. Nous disons en installer quelques-uns et découvrir ce qui vous convient le mieux. Vous êtes le seul juge de cela, et ce sera un outil que vous utiliserez fréquemment, alors prenez votre temps, utilisez-le, lisez-le et vous familiariser avec. Quel que soit votre choix, nous supposerons que vous avez fait votre choix en ce qui concerne l'outil d'édition et que vous connaissez son utilisation.

Le processus de compilation

En termes simples, ce processus est ce qui commence à partir du code source que vous avez écrit et si tout se passe bien, le résultat est un binaire exécutable ou une bibliothèque. Inutile de dire qu'il y a plus, mais il est essentiel pour vous de comprendre la phrase ci-dessus avant de continuer. Vous n'avez pas besoin de mémoriser tous les concepts maintenant car ils deviendront plus clairs plus tard. À ce stade, il est seulement important d'obtenir l'idée générale.

Disons que nous avons le code source écrit et maintenant nous voulons qu'un compilateur le traite et nous donne l'exécutable binaire. Le workflow de ce processus est illustré à votre droite.

Veuillez noter que cela ne s'applique qu'à C, qui est une langue compilée, par opposition aux langues interprétées (Perl, Python, Shell), et nous nous référerons strictement à GCC et à ses amis pour le reste de notre guide. Comme la figure de votre droite illustre le préprocesseur (CPP) prend votre code source, recherche Instructions du préprocesseur (En C, ils commencent par un hachage) et si tout semble correct, le résultat est une sortie compréhensible par le compilateur. Le compilateur (GCC) fait tout le travail acharné, y compris l'optimisation du code pour le matériel sous-jacent (si vous êtes intéressé par la théorie du compilateur ou la compilation croisée, il y a beaucoup de bons livres sur le sujet, mais nous supposons un niveau plus débutant ici). Le résultat est le code d'assemblage, intimement proche de la machine, à partir de laquelle les binaires seront générés (tout comme l'outil). En fin de compte, selon les options et le code, «LD» reliera l'exécutable à toutes les bibliothèques et le tour est joué nécessaires! Le résultat final: votre programme. Si vous souhaitez voir tous les fichiers intermédiaires résultants, les tiges de l'indicateur GCC vous aideront à le faire. Nous vous recommandons de lire la page manuelle du GCC, au moins frugalement, et de nous assurer que votre compilateur nous fait à jour. Vous vous habiturez aux drapeaux GCC habituels en lisant nos exemples, mais vous êtes censé savoir ce qu'ils font, pas seulement les commandes de copie et de coller que vous voyez à l'écran.



Exemple C Programme

Chaque tutoriel de programmation autonome commence par un programme «Hello, World». Ce programme ne fait que l'imprimer «bonjour, monde!"Sur l'écran, puis sort. Il est utilisé pour illustrer la structure très basique d'un programme et de certains concepts essentiels. Donc, sans plus tarder, le voici.

#inclure  / * Ceci est un commentaire * / int main () printf ("bonjour, monde!\ n "); retour 0; 

Maintenant, disséquons le programme ligne par ligne et voyons ce que chaque ligne représente. Le premier est une directive préprocesseur (voir ci-dessus) qui demande le stdio.H fichier, qui fournit la définition du printf fonction. Les fichiers d'en-tête sont des fichiers qui contiennent généralement diverses définitions (fonctions, variables…) et faire .C fichiers moins encombrés. Tout quel fichier source (.c) aura besoin d'être un #inclure déclaration et peut-être un argument au linker. Tout ce qui est défini dans le fichier d'en-tête inclus sera disponible dans votre code source.

principal() est une fonction obligatoire dans chaque programme C. Comme son nom l'indique, le principal L'activité se produira ici, quel que soit le nombre de fonctions que vous avez définies. int main() signifie que cette fonction n'a aucun argument (les parenthèses vides) et qu'elle renvoie un entier (l'initiale int). Tout cela sera discuté plus tard. La chose la plus importante ici est le printf fonction, qui prend notre texte en tant que argument et l'affiche. "\ n«Signifie« newline »et c'est l'équivalent de l'utilisation de la touche Entrée (ou ^ m). Il est appelé une séquence d'évasion et toutes les séquences d'échappement en C commencent par «\». Par exemple, pour mieux comprendre ce qu'est une séquence d'évasion, imaginez que vous écrivez du code HTML et que vous devez imprimer un "<” 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".

retour 0 dit au compilateur que tout va bien et l'exécution de principal() La fonction se termine là. En effet. Les accolades bouclées qui commencent et terminent la fonction principale délimiter son bloc d'exécution, c'est-à-dire ce qui se passe dans principal(), reste principal(). Vous avez peut-être remarqué les demi-colons à la fin des déclarations: ils sont obligatoires comme signe que la déclaration actuelle s'est terminée là-bas, mais ils ne doivent pas être utilisés dans les directives du préprocesseur comme #inclure.



Compilation

La compilation sera discutée plus en détail dans les parties à venir de ce guide. Mais pour l'exhaustivité, voici un exemple de ligne de commande simple sur la façon de compiler et d'exécuter notre premier programme C «Hello World»:

$ gcc -o bonjour bonjour.C $ ./ Bonjour bonjour, monde!

Conclusion

Nous espérons que nous n'avons pas trop entassé les informations dans votre cerveau et que vous apprécierez de rester avec nous sur ce tutoriel de programmation. La partie 2 sera confrontée à une comparaison entre C et d'autres langages de programmation afin d'aider ceux qui ont déjà une certaine expérience du développement.

Voici ce à quoi vous pouvez vous attendre ensuite:

  • je. C Développement sur Linux - Introduction
  • Ii. Comparaison entre C et d'autres langages de programmation
  • III. Types, opérateurs, variables
  • Iv. Contrôle de flux
  • V. Les fonctions
  • Vi. Pointeurs et tableaux
  • Vii. Structure
  • Viii. E / S de base
  • Ix. Style de codage et recommandations
  • X. Construire un programme
  • Xi. Emballage pour Debian et Fedora
  • Xii. Obtenir un forfait dans les référentiels officiels Debian

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Installez Arch Linux dans VMware Workstation
  • Choses à installer sur Ubuntu 22.04
  • Téléchargement Linux
  • Commandes Linux de base
  • Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
  • Ubuntu 20.04 Guide