[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Documentation complète sur la compilation de programmes



On 12/23/2015 05:43 PM, enae wrote:
[...]

Après examen de tutoriels, livres de programmations et autres ressources, je continue de me poser des questions sur le processus de compilation de programmes.

Certes, le fichier sources est traduit en langage machine, certes, pour ce faire il faut utiliser des options -o etc... Mais existe-t-il réellement un manuel complet (ou ressource informatique) abordant de façon concrète, claire et en profondeur les points suivants: - les différentes étapes du processus de compilation, leur utilité, le fonctionnement en détail de celles-ci
- toutes les options possibles, chacune étant expliquée en profondeur
- des explications sur l'impact hardware lié à la compilation
- la compilation croisée

En principe, il ne peut pas exister de resources universelles décrivant comment compiler un programme, pour la bonne raison que d'un compilateur à l'autre, et d'un language à l'autre, le processus de compilation est très différent.

Concrètement, compiler un programme dont le code source est codé en C et un programme dont le code source est codé en Ocaml ou en Common Lisp est vraiment très différent, notamment parce que dans le détail "compiler" veut dire des choses différentes, et qu'il y a peut-être différentes façons de compiler (le développeur ou le contributeur occasionnel de patch va compiler avec des options de déboguage; l'utilisateur et le packageur -celui qui fait un paquet Debian- préfère compiler avec des options d'optimisations).

D'autre part, un logiciel libre suffisamment complexe utilisera souvent ce qu'on peut appeler pompeusement des techniques de méta-programmation: une partie du code source en C (par exemple) serait alors générée. Par exemple le compilateur GCC a actuellement plus d'une douzaine de générateurs spécialisés de code C++ qui genèrent une petite partie du compilateur, la grande majorité étant du C++; et certains de ses generateurs (pour GCC, gengtype par exemple) sont très spécifiques à l'application.


La plupart des logiciels libres ont des instructions de compilation, souvent en anglais techniques (donc assez lisible), par exemple dans un fichier README ou INSTALL.

J'aurais tendance à suggérer de commencer à compiler un petit logiciel libre; ainsi il est plus simple de compiler GNU bash ou GNU coreutils que de compiler le compilateur GCC ou le noyau Linux.

Il y a aussi la question de la configuration du logiciel (une première étape de l'installation est souvent de lancer un script, par exemple ./configure, qui vérifie quels outils sont disponibles sur le système et génère des fichiers de configuration ad-hoc). Et la question, très liée à la configuration, de la dépendance de paquets existants.

Si on veut viser la généralité la plus forte, ces thématiques sont encore des sujets de recherche académiques (et on peut faire une thèse de doctorat, y compris en France, sur ces questions).

Bonne année à tous!



--
Basile STARYNKEVITCH         http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mine, sont seulement les miennes} ***


Reply to: