9
votes

Quels sont les voies d'outils alternatifs (de travail) pour le développement X86 C ++ sur Linux?

Je précise que je restreint cette question au développement "natif" pour ma boîte Linux x86 (64bits). Aucune architecture intégrée ou non X86.

Depuis que je suis un utilisateur C ++ et il y a une Renaissance C ++, j'utilise actuellement C ++ pour des projets personnels.

En ce moment, j'utilise le robuste, Traditionnel Linux / GCC / Fabrication de la chaîne d'outils.

Mais à travers des poteaux de blog et donc des questions, j'ai récemment pris conscience de nouveaux outils prometteurs:

  • '' CLANG '' comme alternative pour '' GCC '', beaucoup plus rapide, en donnant de meilleurs messages d'erreur
  • '' Gold '' comme remplacement de '' ld '', beaucoup plus vite

    Ces outils sont moins connus et il est facile de ne pas même savoir d'eux.

    Y a-t-il d'autres outils moins intéressants que je devrais être au courant? Par exemple alternatif à GDB ou similaire? (J'utilise aussi CMAKE)

    Je cherche une facilité de développement d'abord, puis une amélioration de la vitesse de développement. Toute autre amélioration est la bienvenue.

    outils gratuits si possible.


3 commentaires

Il y a le compilateur ICC d'Intel qui est livré avec un débogueur et d'autres outils. C'est gratuit pour une utilisation non commerciale sur Linux, sinon cela coûte.


@Paur merci Paul. Bien sûr, je suis plus intéressé par les outils gratuits et qui apportent une amélioration notable sur les anciens. (Intel prétend ajouter une vitesse d'exécution mais c'est tout ce que je pense)


Comme je l'ai dit dans mon commentaire, ICC est gratuit pour une utilisation non commerciale sur Linux. En plus de la génération de code de bonne qualité, il s'agit généralement du premier compilateur d'avoir pris en charge les nouvelles fonctionnalités de la CPU (pour des raisons évidentes), par ex. Dernière SSE, AVX, etc.


3 Réponses :


4
votes

Je connais deux alternatives:

  • TUP
  • Ninja Build

    Les deux peuvent remplacer la marque, car ils sont plus rapides pour les grands projets, car ils ne font pas de telles vérifications étendues.


2 commentaires

+1 très intéressant, merci. "Faire vs tuup" semble prometteur. L'utilisez-vous vous-même? Maintenant, ce dont nous avons besoin, un générateur de TUP pour la cmake. Je vois qu'il y a des efforts dans cette direction.


@Offirmo Mon collègue s'efforce de passer de faire à TUP, et il a mentionné une amélioration de 30%.



5
votes

Vous pouvez être intéressé par Ccache (une cache de compilateur capable d'éviter une recompilation inutile et de manière transparente utilisable à travers la même commande g ++ , juste en ajoutant un symbole symbolique à l'intérieur de votre $ chemin )

pour la programmation C (mais pas C ++), vous pourriez être intéressé par Tinycc - qui compile très rapidement (mais produisent du code binaire lentement).

Lors de la codage, le Le collecteur des ordures de Boehm pourrait être utilisé. Voir Cette question liée à l'utiliser en C ++.

et utilisez également Valgrind pour déboguer vos fuites de mémoire.

Parfois, chargement dynamique d'un objet partagé avec Dlopen est saisissant. Les symboles dlsym doivent être extern "c" en C ++. J'adore parfois la génération de code C ou C ++ à la volée, la compilation et dlopen -ing du module.

Pour bâtir, envisagez d'enquêter sur d'autres constructeurs, comme par exemple. Omake .

Lors de la compilation, n'oubliez pas le -wall (et peut-être -wextra ) Drapeau sur le compilateur. La nouvelle optimisation du temps de liaison (avec cxx = g ++ -flto dans votre Makefile ) pourrait être intéressant (mais le temps de compilation souffre peut-être une augmentation de 10% de la vitesse de l'exécutable de l'exécutable ).

Si vos fichiers de code source partagent tous les mêmes en-tête C ++, pré-compilez l'en-tête en vaut la peine.

Newer (par exemple mieux que C ++) Les langues existent, comme OCAML et HASKELL, mais aussi aller et d.

Utilisez un système de contrôle de version comme GIT Même pour les projets PET.

QT est un bon cadre C ++, notamment pour sa boîte à outils graphique.

WT vous permet de coder dans des interfaces Web assez rapidement.

Les deux GCC et GDB évoluent toujours. N'oubliez pas d'utiliser les dernières versions (par exemple 4.6 pour GCC, 7.3 pour GDB) qui fournissent des améliorations majeures sur celles précédentes.

envisagez de prolonger ou de personnaliser votre compilateur GCC pour vos besoins particuliers à travers des plug-ins ou mieux encore en utilisant Extensions Melt .


7 commentaires

Ok beaucoup de réponses ici (je n'irais pas aussi loin que le changement de langue, gardons cette question sur la bonne voie). Tinycc est cible seulement, dommage. Je suis intéressé par le collecteur des ordures, jetez un coup d'œil.


@Basile Starynkevitch - +1 pour mentionner -wall, nécessaire pour toutes les constructions.


Je n'ai jamais entendu parler de fondre, a l'air très intéressant, merci!


Je suis l'auteur principal de Melt, alors je serais vraiment ravi de répondre à vos questions !!!


@BasileSarTaryNketch c'est bien. Puis-je avoir un lien vers un cas d'utilisation réelle d'utilisation de la masse fondue améliorant le développement C ++? Je ne peux pas (facilement) trouver.


Je n'ai pas encore d'exemple simple de cela. Extension de la GCC (soit en C avec des plug-ins ou de la fonte) nécessite la compréhension de la plupart des représentations internes du GCC (et nécessitent souvent la manipulation de la part de cela), et cela prend du temps. Mais Mozilla a utilisé ses propres plugins GCC (Terbehydra) pour le code BIG C ++ (le navigateur Firefox).


@Offirmo: Il y aura un didacticiel de fusion de GCC à la conférence HIPEAC, Paris (France) 24 janvier 2012



1
votes

Pour remplacer la pièce de jeu de la boîte à outils, je vous recommande waf qui est rapide et a une petite empreinte. Le soutien est assez bon aussi bien.

J'ai essayé de l'or qui n'était pas si plus rapide que LD, mais semble être prometteur. Cela ne semble pas être vraiment maintenu cependant, la dernière fois que j'ai vérifié.

Clang semble assez prometteur, mais je n'ai pas essayé dans un projet de production. Je prévois que son design bien pensé conduit à un développement vraiment rapide. Je prévois d'l'utiliser pour passer à C ++ 11 ^^

my2c


6 commentaires

L'or est maintenu, mais est maintenant assez mature dans la pratique. Google a un intérêt actif pour l'or.


Actuellement, GCC 4.6 semble avoir un support légèrement meilleur C ++ 11 que Clang 3.0


J'utilise actuellement LLVM GCC (fondamentalement Clang) sur OSX pour le moment et je trouve cela vraiment rapide pour la compilation et le développement général. Dans Xcode, CLANG construit constamment les tables de symboles de l'arrière-plan qui rend la fin du code sensible et conscience contextuelle et comme mentionné précédemment, réduit la compilation / la durée de construction.


@Basile: Merci pour les informations. Avez-vous essayé sur un grand projet reliant des milliers de fichiers d'objets?


@Basile: OK. Je n'ai pas vérifié GCC 4.6 vs dernier clang. Fera cela avant de tester Clang avec C ++ 11 :)


Google utilise de l'or pour construire un exécutable de taille énorme (plus d'un demi-gigaoctet).