Hi,
J'ai divers répertoires sources dans /opt.
Je voudrais compiler ces fichiers dans /tmp (qui grace à mon /etc/fstab est un tmpfs).
Comment dois-je faire ?
Dois faire un cp des sources dans /tmp, compiler dans ce /tmp et utiliser un script rc.local.shutdown qui copie le contenu de /tmp dans /opt ?
Ou dois-je utiliser une option de .configure ou make pour lui dire de mettre les fichiers objets dans /tmp ?
Merci et bonne fin de weekend !
PS : je tourne en Arch GNU/Linux et le but de la manipulation est de gagner du temps et d'éviter de solliciter inutilement mon SSD M4
# man gcc propose quelques options
Posté par NeoX . Évalué à 5.
une option de compilation pour carrement ne pas utiliser de fichier temporaire
ou une variable d'environnement pour definir ou seront placé les fichiers temporaires
[^] # Re: man gcc propose quelques options
Posté par PolePosition . Évalué à 1.
Hi !
Merci beaucoup !
Si je comprends bien, voici les avantages et inconvénients de ces solutions :
Dans un tmpfs :
TMPDIR pointé vers /tmp (tmpfs) :
-pipe :
Je pense opter pour le TMPDIR !
+
[^] # Re: man gcc propose quelques options
Posté par Michaël (site web personnel) . Évalué à 5.
En principe, il suffit de changer la valeur de CFLAGS dans ton environnement.
Ensuite, il y a des versions de Make qui ont une fonction
objdir
qui permet de définir un dossier où sont stockés les fichiers produits par la compilation (les .o, etc.). Si ton Make dispose d'une telle fonction, choisir commeobjdir
un dossier situé sur un périphérique différent des sources permet de compiler plus rapidement, le meilleur gain allant à un tmpfs si tu as de la RAM et du cache à revendre.Bein-sûr, si tu veux conserver ces fichiers, il vaut mieux les recopier dans un endroit sûr… (non tmpfs) quitte à les recopier sur un tmpfs après chaque reboot, cela te fera gegner du temps pour tes mises au point.
Une autre fonction intéressante pour toi est la possiblité de monter un dossier sur un autre: tu peux monter un tmpfs sur ton dossier objdir, les lectures se font alors sur l'objdir et les écritures sur le tmpfs (utile si tu compiles beaucoup et souhaite préserver ton SSD). Dans FreeBSD, cela s'appelle un unionfs, Linux sait faire aussi mais je ne connais pas le nom.
[^] # Re: man gcc propose quelques options
Posté par ǝpɐןƃu∀ nǝıɥʇʇɐW-ǝɹɹǝıԀ (site web personnel) . Évalué à 5. Dernière modification le 18 mars 2012 à 13:41.
Reste le problème de bien comprendre de quoi l'on parle en matière de fichiers temporaires de compilation. Ainsi, le plus souvent, les .o — par exemple — ne seront pas considérés comme des fichiers temporaires. Du coup les solutions à base de TMPDIR ou de -pipe n'épargnerons que modérément un SSD.
Du coup, j'utilise un tmpfs pour mes compilations ; avec gentoo, cela se fait très simplement pour les ebuild. Si je devais faire une compilation manuelle (et que je veuille réellement le faire en répertoire temporaire), j'utiliserais des commandes dans ce genre:
cd /tmp
make -f /vers/mon/projet/makefile
ou bien
/vers/mon/projet/configure
cd /tmp
make
Considérant que la plupart des makefiles et scripts configure sont suffisamment bien faits pour être utilisables depuis un répertoire distant de celui d'origine.
« IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace
[^] # Re: man gcc propose quelques options
Posté par PolePosition . Évalué à 1.
Hi,
Merci pour vos réponses.
Je crois que tout compte fait, je vais continuer à compiloner sur /opt, donc sur le SSD. De toute façon, ce n'est pas comme si je compilonais tous les jours… Je ne suis pas Linus !
Mais vos réponses n'en restent pas moins très intéressantes.
+
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.