95 votes

Remplacer ld par de l'or - une expérience?

Quelqu'un a déjà essayé d'utiliser gold au lieu de ld?

gold promet d'être beaucoup plus rapide que d' ld, de sorte qu'il peut aider à accélérer les cycles d'essai pour les grandes applications C++, mais peut-il être utilisé comme la baisse-dans le remplacement pour les ld?

Peut - gcc/g++ directement appel gold.?

Sont-il savoir de bugs ou problèmes?

Bien qu' gold fait partie de la GNU binutils depuis un certain temps, j'ai trouvé presque pas de "success stories" ou même "Howto" dans le Web.

(Mise à jour: ajout de liens vers de l'or et de l'entrée de blog expliquant cela)

60voto

nob Points 752

Au moment de la compilation des projets plus importants sur Ubuntu 10.04. Ici vous pouvez installer et à intégrer facilement avec l' binutils-gold ensemble (si vous retirez de ce paquet, vous d'obtenir votre ancien ld). Gcc utilise automatiquement l'or, alors.

Quelques expériences:

  • l'or ne fait pas de recherche en /usr/local/lib
  • l'or n'est pas assumer libs comme pthread ou rt, a dû ajouter à la main
  • il est plus rapide et nécessite moins de mémoire (le plus tard est important sur de gros projets C++ avec beaucoup de boost, etc.)

Ce qui ne fonctionne pas: Il ne peut pas compiler le noyau choses et, par conséquent, aucune des modules du noyau. Ubuntu n'automatiquement par DKMS si la mise à jour des pilotes propriétaires comme fglrx. Cette échoue avec l' ld-gold (vous devez le supprimer de l'or, de redémarrer DKMS, réinstallez ld-gold.

44voto

Tilman Vogel Points 2379

Comme il m'a fallu un peu de temps pour trouver comment utiliser sélectivement l'or (c'est à dire pas à l'échelle du système à l'aide d'un lien symbolique), je vais poster la solution ici. Il est basé sur http://code.google.com/p/chromium/wiki/LinuxFasterBuilds#Linking_using_gold .

  1. Créez un répertoire où vous pouvez mettre un or de la colle script. Je suis l'aide d' ~/bin/gold/.
  2. Mettre la suite de la colle script là et nommez - ~/bin/gold/ld:

    #!/bin/bash
    gold "$@"
    

    Évidemment, le rendre exécutable, chmod a+x ~/bin/gold/ld.

  3. Changer vos appels à l' gcc de gcc -B$HOME/bin/gold ce qui rend gcc regarder dans le répertoire de programmes d'aide comme ld et utilise donc la colle script à la place du système par défaut ld.

10voto

Delan Azabani Points 33013

Vous pouvez lier ld à gold (dans un répertoire binaire local si vous avez installé ld pour éviter tout écrasement):

 ln -s `which gold` ~/bin/ld
 

ou

 ln -s `which gold` /usr/local/bin/ld
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X