IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Choisir un environnement de développement Discussion :

[Compilateur] Un compilateur C ultra léger et ultra rapide : TCC


Sujet :

Choisir un environnement de développement

  1. #1
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut [Compilateur] Un compilateur C ultra léger et ultra rapide : TCC
    Hi all,

    TCC : the Tiny C Compiler

    Je ne pensais pas avoir à revenir au C de si tôt, mais voilà, j'ai dut modifier des vieilles applications. Mais je rencontrais des difficultés pour réinstaller GCC sous Windows sans installer MingW, et de plus je ne démord pas de trouver GCC beaucoup trop lourd.

    Alors je me suis souvenu de TCC sous Linux, et j'ai eu la bonne surprise de découvrir qu'il existe maintenant aussi pour Windows.

    TCC the Tiny C Compiler - par Fabrice Bellard

    Pour vous faire une idée : il ne nécéssite pas de programme installation, juste un fichier à décompresser et à copier (pensez tout de même à vos variables d'environnement). L'installation ne pèse en tout et pour tout que 1.2M pour tout le compilateur, le lieur et les entêtes (je dis bien 1.2, et non pas 12). Question code produit, chez moi, les executables compilés avec TCC sont environ 10 fois plus petits que ceux produits par GCC. Et que dire de la compilation qui s'execute aussi vite que l'appuie sur la touche entrée (instantané)....

    TCC est fourni avec les fichiers *.def des trois principale dll de Windows, mais pas avec les libs. Je vous transmet donc en pièce jointe le programme que j'utilise (issu de LCC que je n'utilise plus, mais j'ai conservé cet utilitaire) pour générer les libs (le plus commode à mon avis)

    Note: le lieur de TCC ne permet pas de faire des liaisons directes vers les DLL, et nécéssite obligatoirement la passage par une librairie.

    La compilation se fait un peu à la Borland, c'est à dire qu'il fait le ménage aprés chaque compilation. Tout est propre, pas de nettoyage à faire.

    TCC est la preuve qu'en soignant une application, elle peut être trés légère, trés rapide, tout en fournissant tout ce qu'on en attend... pour peu qu'on prenne le soin de ne pas reposer sur une usine à gaz. Et il faut reconnaître qu'au regard du paysage actuel, TCC a l'allure d'un petit miracle.

    Gageons que TCC, en plus de vous fournir un compilateur produisant des binaires légers, en toute simplicité, vous donnera envie de vous poser des questions utiles sur la différence GCC/TCC (poid, consomation de resource, complexité, etc).

    Bonnes scéances de compilation, et amusez-vous bien

    P.S. Pour générer par exemple la librairie pour gdi32 avec buildlib, faites "buildlib gdi32.def gdi32.a gdi32.dll". TCC fourni son générateur de fichiers *.def

    P.P.S. Si quelqu'un(e) sait comment intégrer ce compilateur à FreePascal, ça m'interesse.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Hibou57 Voir le message
    Et il faut reconnaître qu'au regard du paysage actuel, TCC a l'allure d'un petit miracle.
    Surtout lorsque l'on sait que ce compilateur a, à l'origine, été écrit par Fabrice Bellard pour remporter IOCCC (Internation Obfuscated C Code Contest) en 2002. A part ça, il est difficile de comparer gcc et tcc uniquement sur la vitesse de compilation et la taille des exécutables générés. La qualité des optimisations opérées par les deux compilateurs n'est pas comparable. Mais tcc est un projet intéressant.

    Thierry

  3. #3
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    International Obfuscated C Code Contest ? Je ne comprend pas ? Le coce source est pourtant parfaitement lisible.... du moins pour le souvenir que j'en ai de ma dernière excursion sous Linux... je me souviens même avoir modifier quelques petites bricoles dans le source.

    Pour la taille du code, je constate, maintenant pour l'optimisation, je n'ai pas été vérifier. Mais je me souviens que quand j'étais passé à Borland C++, qui faisait plus d'optimisation que TurboPascal, j'avais mis le nez dans les code produit, et je voyais bien que l'allocation des variables registre, etc, étaient présente, mais que malgré tout, les programme que j'avais porter pour ce C++ était même parfois plus lents que leurs originaux Pascal.

    La micro optimisation n'arrivera de toute façon jamais au niveau de la macro optimisation, qui est, elle, sous la seule responsabilité du/de-la codeur(se).

    En tout cas, il est apparement capable, dans sa version Linux, de compiler le noyau de manière tout à fait raisonnable... mais moyennant quelque patch pour le souvenir que j'en ai. Et d'ailleur les entêtes difèrrent un peu de ceux de GCC, parce que j'ai dut ajouter des #include <sys/stat.> là ou GCC n'en avait pas besoin. A moins que les entêtes ne diffèrent entre la version Windows et Linux, mais je ne pense pas.

    Mais ce n'est pas trop grave.

    Ah, il faut aussi convertir dans les chemin des includes, tous les \ en /, parce qu'apparement la version Windows n'accepte pas le séparateur \ pour les chemin... mais seulement dans les sources, et bien sûr pas à la ligne de commande.

    Je le garde sous le coude... mais si tu as des infos que j'ignore, je veux bien lire. Mais bon, Open Source n'est pas chez moi une obligation non-plus, puique que je préfère juger à l'utilisation. Le source fermé n'est pas toujours synonime de mauvaise qualité, ni le contraire, le problème de la qualité est ailleur.

    Mais tu me surprend en parlant "d'obfucated"... tu es sûr ? Et comment tu as sut ça ?

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    C'est avec la première version de TCC que Bellard a gagné le International Obfuscated C Code Contest 2002: http://fabrice.bellard.free.fr/otcc/.

    Bien entendu, le code a été désobfusqué depuis. Je trouve l'origine de ce compilateur marrante, c'est pour cette raison que je l'ai mentionné ici (sans aucune conotation négative quant à la valeur du compilo). Je n'ai pas de comparaison sérieuse entre gcc et tcc à te fournir. J'ai déjà eu l'occasion d'étudier le code source de tcc, mais n'ai jamais (encore) eu le courage d'ouvrir le capot de gcc.

    TCC est encore jeune et se veut un compilateur compact et rapide. Dans ce contexte, il est sans doute illusoir à mon avis de le comparer à gcc. Les objectifs des deux projets sont différents.

    Thierry

  5. #5
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    Un avantage à sa petite taille : pour l'open source (publique ou restreint), on peu distribuer le code source d'une application avec son environnement de compilation.

    Je me souviens avoir plusieurs fois rencontré des problèmes, à l'époque ou j'essayais de découvrir l'open source. Je ne parvenais pas à compiler, souvent à cause de différence d'installation du compilateur C, différence de version, différence des entêtes, ou tout simplement quand ce n'était pas le même compilateur.

    Avec un compilateur C léger, il est possible de distribuer le compilateur en même temps, et donc de résoudre définitivement ce problème.

    Et ça le rend aussi approprié pour les compilateur qui on le C comme code cible (comme SmartEiffel, un compilateur Eiffel).

    Mais bon, bèmole quand-même, je rencontre un problème avec les librairies. TCC ne semble pas trouver les symbol qui sont dans des fichiers objets qui sont dans des librairies, alors qu'il trouve ces sybole si on lui donne directement le fichier objet. J'en fait un autre fil (pour rester dans le sujet de celui-ci).

Discussions similaires

  1. CMS ultra léger similaire à WordPress ?
    Par Shinja dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 22/02/2014, 12h10
  2. [2.x] [Ajax] Faire un controller ultra-léger
    Par max13fr dans le forum Symfony
    Réponses: 4
    Dernier message: 25/08/2011, 18h04
  3. Ultra Pascal : Compilateur Pascal pour calculatrices TI-89 et TI-92
    Par forum dans le forum Outils à télécharger
    Réponses: 0
    Dernier message: 22/03/2011, 23h56
  4. Fenêtre ultra léger avec Swing
    Par mesken dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 20/05/2010, 12h19
  5. Moteur 3D ultra-léger
    Par a7aa7a dans le forum 3D
    Réponses: 1
    Dernier message: 13/11/2009, 21h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo