UNIX cc posizione eseguibile
-
26-09-2019 - |
Domanda
Quando compilo un file .c
utilizzando il comando cc
, si crea un eseguibile a.out
. Ho notato che si crea il file a.out
dentro la mia directory corrente. C'è un modo per rendere il file a.out
essere creati nella stessa directory del file .c
ovunque mi capita di essere sul sistema?
per esempio se il mio percorso di corrente è ~/desktop
e digitare il comando:
cc path/to/my/file/example.c
Si crea il file nella directory a.out
~/desktop
. Vorrei che per creare il file a.out
in path/to/my/file/a.out
Soluzione
Si dovrà utilizzare l'opzione -o ogni volta che si chiama cc:
cc -o path/to/my/file/a.out path/to/my/file/example.c
o si può fare uno script wrapper in questo modo:
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
allora si può richiamare
./mycc path/to/my/file/example.c
e, a sua volta, chiama
cc -o "path/to/my/file/a.out" path/to/my/file/example.c
, naturalmente, si può mettere in Mycc $ PATH in modo si può chiamare come:
mycc path/to/my/file/example.c
Altri suggerimenti
È possibile dare il "-o" bandiera per definire il file di output. Ad esempio:
cc path/to/my/file/example.c -o path/to/my/file/a.out
Sì, con -o
.
cc path/to/my/file/example.c -o path/to/my/file/a.out
Si potrebbe non essere quello che stai cercando, ma si può facilmente reindirizzare l'output di una compilation utilizzando il siwtch -o
in questo modo:
cc -o /a/dir/output b/dir/input.c
Non so, come archieve, ciò che si vuole (sostituzione automatica), ma credo che si può fare con un po 'bash in questo modo: (io sono povero di scripting, non testato e può essere sbagliato):
i = "a/path/to/a/file.c" cc -o ${i%.c} $i
Questo dovrebbe compilare un file specificato in i in un file di output nella stessa dir, ma con il suffisso .c-rimosso.