Question

J'aimerais expérimenter le tcmalloc de Google sous Linux ... J'ai un énorme projet ici, avec des centaines de fichiers Makefile générés par qmake ... J'aimerais trouver un moyen de faire en sorte que gcc se lie globalement à tcmalloc ( comme avec libc) ... Est-ce possible? Ou devrais-je éditer chaque Makefile?

(Je préférerais ne pas éditer tous les fichiers pro car il y en a des centaines)

(En outre, nous avons déjà essayé la méthode LD_PRELOAD et cela ne fonctionne pas très bien) ...

Était-ce utile?

La solution

Comment vos makefiles accèdent-ils au compilateur ( gcc / g ++ / cc / c ++ )?

S'il ne s'agit que d'un nom ( g ++ ) et non d'un chemin explicite ( / usr / bin / g ++ ), vous pouvez simplement créer un g ++ de remplacement, quel que soit le répertoire. vous préférez et préfixez ce répertoire à votre chemin.

Exemple: créer un & nbsp; ~ / mytmpgccdir / g ++ & nbsp; fichier:

#!/bin/tcsh -f
exec /usr/bin/g++ -Lfoo -lfoo $*:q

Ajouter les extras ( -Lfoo -lfoo ) de votre choix, avant ou après les autres arguments ( $ *: q ).

Puis pré-accrochez-le sur votre chemin et faites-le normalement.

#tcsh version
% set path = ( ~/mytmpgccdir/  $path:q )
% make clean
% make

p.s. S'il s'agit d'un nom explicite, vous pourrez peut-être le remplacer sur la ligne de commande. Quelque chose comme: & nbsp; make all GCC = ~ / mytmpgccdir / gcc

p.p.s Si vous utilisez LD_PRELOAD, vous voudrez peut-être qu'un script comme celui-ci définisse LD_PRELOAD avant d'exécuter votre programme. Sinon, il est facile de terminer LD_PRELOAD sur toutes les commandes telles que / bin / ls, make, g ++, etc.

Autres conseils

Tout d’abord, consultez la documentation de qmake. Il existe un moyen simple de spécifier (dans un fichier .pro) qu’une bibliothèque donnée doit toujours être liée.

De plus, comme vous venez d'expérimenter, utilisez simplement LD_PRELOAD - aucune recompilation n'est nécessaire:

LD_PRELOAD = "/usr/lib/foo/libtcmalloc.so" ./votre_programme

Il n'est pas nécessaire que vous ayez lié le lien " votre_programme " contre la bibliothèque tcmalloc de google.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top