emplacement exécutable UNIX cc
-
26-09-2019 - |
Question
Quand je compile un fichier .c
en utilisant la commande cc
, il crée un exécutable a.out
. Je l'ai remarqué qu'il crée le fichier a.out
dans mon répertoire courant. Y at-il un moyen de rendre le fichier a.out
être créé dans le même répertoire que le fichier .c
où je me trouve être sur le système?
par exemple si mon chemin actuel est ~/desktop
et je tapez la commande:
cc path/to/my/file/example.c
Il crée le fichier a.out
dans le répertoire ~/desktop
. Je voudrais pour créer le fichier a.out
dans path/to/my/file/a.out
La solution
Vous devez utiliser le commutateur -o chaque fois que vous appelez cc:
cc -o path/to/my/file/a.out path/to/my/file/example.c
ou vous pouvez faire un script d'emballage comme ceci:
Mycc
#!/bin/bash
dirname=`dirname "$1"`
#enquoted both input and output filenames to make it work with files that include spaces in their names.
cmd="cc -o \"$dirname/a.out\" \"$1\""
eval $cmd
vous pouvez appeler
./mycc path/to/my/file/example.c
et, à son tour, appel
cc -o "path/to/my/file/a.out" path/to/my/file/example.c
Bien sûr, vous pouvez mettre Mycc en $ PATH afin que vous puissiez l'appeler comme:
mycc path/to/my/file/example.c
Autres conseils
Vous pouvez donner le « -o » drapeau pour définir le fichier de sortie. Par exemple:
cc path/to/my/file/example.c -o path/to/my/file/a.out
Oui, avec -o
.
cc path/to/my/file/example.c -o path/to/my/file/a.out
Il peut être pas ce que vous cherchez, mais vous pouvez facilement rediriger la sortie d'une compilation en utilisant la siwtch de -o
comme ceci:
cc -o /a/dir/output b/dir/input.c
Je ne sais pas, comment archieve, ce que vous voulez (remplacement automatique), mais je suppose que vous pouvez le faire avec un peu bash comme ceci: (je suis pauvre dans les scripts, non testé et peut-être tort):
i = "a/path/to/a/file.c" cc -o ${i%.c} $i
Il doit compiler un fichier spécifié dans i dans un fichier de sortie en même répertoire, mais avec le suffixe .c enlevé.