2010-02-25 5 views
0

Je compile mes programmes dans un compilateur. Plus tard, je cours et je teste les programmes dans un environnement différent. Si je compile avec -fprofile-arcs alors le programme essaie d'écrire un fichier dans un dossier qui n'existe pas dans l'environnement en cours d'exécution. Y a-t-il une solution de rechange à ce problème?Comment modifier le chemin source dans l'exécutable g ++

Merci

+0

Il est impossible d'avoir la même structure de dossiers sur les deux machines, et il n'y a pas de chemins communs :(. J'ai essayé. – nakiya

Répondre

0

Nakiya, selon this « -fprofile-arcs Ajouter code de sorte que les arcs de flux de programme sont instrumentés. Pendant l'exécution des dossiers du programme combien de fois chaque branche et appel est exécuté et combien de fois il Lorsque le programme compilé se termine, il enregistre ces données dans un fichier appelé nomdefonction.gcda pour chaque fichier source.Les données peuvent être utilisées pour des optimisations dirigées par le profil (-fbranch-probabilités), ou pour l'analyse de la couverture de test (- ftest-coverage) Le nom d'objet de chaque fichier objet est généré à partir du nom du fichier de sortie, s'il est explicitement spécifié et il ne s'agit pas de l'exécutable final, sinon il s'agit du nom de base du fichier source. ffix est supprimé (par ex. foo.gcda pour le fichier d'entrée dir/foo.c, ou dir/foo.gcda pour le fichier de sortie spécifié comme -o dir/foo.o). "

+0

Le problème est que les fichiers .gcda tentent de s'écrire dans le dossier où les fichiers d'objets Ce répertoire n'existe pas dans ma machine de course, c'est le problème – nakiya

1

Suite à la réponse de RP, je pense que this serait utile

si le fichier objet /user/build/foo.o a été construit avec des arcs--fprofile, l'exécutable final va essayer de créer le fichier de données /user/build/foo.gcda lors de l'exécution sur le système cible Cela échouera si le répertoire correspondant n'existe pas et il est impossible de le créer.Cela peut être surmonté, par exemple, en définissant l'environnement sous la forme GCOV_PREFIX=/target/run' and GCOV_PREFIX_STRIP = 1 '. Un tel paramètre nommera le fichier de données /target/run/build/foo.gcda.

+0

Essayer ceci maintenant – nakiya

Questions connexes