2010-05-21 19 views
6

Je voulais entrer dans la programmation des systèmes pour Linux et je voulais savoir comment aborder cela et par où commencer. Je viens d'un environnement de développement web (Python, PHP) mais je connais aussi du C et du C++.Linux System Programming

Essentiellement, je voudrais savoir:

  1. Quelle langue (s) d'apprendre et de poursuivre (je pense principalement C et C++)?
  2. Comment/Où apprendre ces langages spécifiques à la programmation de systèmes? Livres, sites Web, blogs, tutoriels, etc
  3. D'autres bons endroits où je peux commencer à partir de base?
  4. De bonnes bibliothèques pour commencer?
  5. De quelle configuration d'environnement ai-je besoin? En supposant que linux doit être là, mais j'ai une boîte de linux que je me connecte rarement en utilisant GUI (toujours utiliser SSH). L'interface graphique est-elle beaucoup plus utile ou l'éditeur de VI est-il suffisant? (S'il vous plaît laissez-moi savoir si cette partie de la question devrait aller à serverfault.com)

PS: Juste pour clarifier, par la programmation des systèmes, je veux dire des choses comme l'écriture des pilotes de périphériques, des outils système, écrire des applications natives qui ne sont pas présents sur la plate-forme Linux mais sur d'autres, jouent avec le noyau linux, etc.

+0

Wiki de la communauté ...? – Betamoo

+2

C'est à propos, mais si vous voulez vraiment entrer dans le futur, apprenez Go. –

+0

@Tom: La programmation Multicore est-elle disponible avec Go? Je pensais aussi puisque ce sont les moments où les processeurs ont plus d'un cœur, on pourrait tirer parti de ceux-ci. droite? –

Répondre

6

Si vous jouez avec le noyau, vous devez utiliser C. Il existe plusieurs livres, comme Essential Linux Device Drivers, qui vous donnent les bases des structures, où exécuter votre code, etc.

En général, de nombreux serveurs sont écrits en C, et parfois en C++. Les bibliothèques populaires incluent Glib, libevent, boost (pour C++).

Vous pouvez tout faire à partir de la ligne de commande dans votre éditeur de choix - il n'y a pas de victoire claire ici, choisissez ce que vous aimez.

+0

Donc, fondamentalement, il n'y a pas besoin d'un IDE comme Eclipse? –

+0

Absolument pas, la plupart des développeurs du noyau n'iraient pas près d'Eclipse. –

+1

+1 d'un hacker noyau qui n'a pas encore trouvé d'IDE que je n'ai pas trouvé en train de me battre. –

2

Pour vraiment entrer dans la programmation du système Linux, je dis l'assemblage C et x86. Pour les applications, Linux prend en charge une myriade de langages, python, C++, fortran, perl, etc, donc choisissez celui que vous voulez utiliser.

+0

J'irais pour Python. –

1

Nano est de loin mon éditeur préféré. Vi est aussi sympa. Je n'ai pas pris le temps de l'apprendre, mais ils peuvent tous deux vous aider dans vos expériences de programmation. Onces il se résume aux erreurs difficiles dans le code, monter le lecteur SSH, puis ouvrez les fichiers à distance avec votre programme graphique préféré.

+0

J'aime cette idée de monter le lecteur SSH. –

+0

Cela présente des problèmes «intéressants» lorsque les connexions hiccup. Je suppose que vous voulez dire SSHFS? –

+0

Oui monsieur. Je l'utilise tout le temps. C'est bien jusqu'à ce que vous perdiez le wifi ou quoi que ce soit. J'ai utilisé expandrive et sshfs sur Ubuntu, et j'habite presque tout. Je n'ai encore rien perdu. La gestion des erreurs pour une connexion cassée n'est pas vraiment là dans Gedit, mais c'est seulement arrivé une fois pour moi! –

3

Votre question est assez large. Les "applications natives qui ne sont pas présentes sur Linux" couvrent des choses comme les suites bureautiques, dont je ne considère pas la programmation système. Je voudrais me concentrer sur une chose (dire les pilotes de périphériques) à la fois. Il y a beaucoup de questions existantes à ce sujet, y compris Linux Programming Book, What IDE would be good for linux kernel driver development, Are there recommended tutorials for writing drivers for Gnu/Linux?, et Ubuntu Linux, what programming languages should I learn?.

Pour apprendre C89, je plongerais certainement dans The C Programming Language (2nd Edition).

+0

Merci. Déjà joué ces fils et j'ai le livre de Kernighan et Ritchie. C'est doux, mon premier amour. :) –

0

La majeure partie de la programmation du système se fait en C comme cela a déjà été mentionné ici. Certains des bons livres dont vous avez besoin pour comprendre l'état d'esprit, et la façon juste de faire Unix/Linux serait "L'Art de la programmation Unix" par Eric Raymond, et "Programmation avancée dans l'environnement Unix" par Richard Stevens.Il y a quelques nouveaux livres sur le marché tels que Robert Love Book "Programmation système Linux" ainsi que "l'interface de programmation Linux", ils sont up2date, mais ils ne discutent pas les principes et pensées d'origine comme ceux que j'ai mentionnés précédemment.