Localização executável do Unix CC
-
26-09-2019 - |
Pergunta
Quando eu compilar um .c
arquivo usando o cc
comando, cria um a.out
executável. Eu notei que isso cria o a.out
Arquivo dentro do meu diretório atual. Existe uma maneira de fazer o a.out
o arquivo será criado no mesmo diretório que o .c
Arquivo onde quer que eu esteja no sistema?
por exemplo, se meu caminho atual for ~/desktop
E eu digito o comando:
cc path/to/my/file/example.c
Isso cria o a.out
arquivo no ~/desktop
diretório. Eu gostaria que ele criasse o a.out
arquivo em path/to/my/file/a.out
Solução
Você terá que usar o interruptor -o cada vez que ligar para CC:
cc -o path/to/my/file/a.out path/to/my/file/example.c
Ou você pode fazer um script de invólucro como este:
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
Então você pode invocar
./mycc path/to/my/file/example.c
E, por sua vez, ligará
cc -o "path/to/my/file/a.out" path/to/my/file/example.c
Claro que você pode colocar o MYCC em $ PATH para que você possa chamá -lo como:
mycc path/to/my/file/example.c
Outras dicas
Você pode fornecer o sinalizador "-o" para definir o arquivo de saída. Por exemplo:
cc path/to/my/file/example.c -o path/to/my/file/a.out
Sim, com -o
.
cc path/to/my/file/example.c -o path/to/my/file/a.out
Pode não ser o que você está procurando, mas você pode redirecionar facilmente a saída de uma compilação usando o -o
siwtch assim:
cc -o /a/dir/output b/dir/input.c
Não sei, como arquivar o que você quer (substituição automática), mas acho que você pode fazer isso com alguma festa assim: (eu sou pobre em roteiros, não testados e pode estar errado):
i = "a/path/to/a/file.c" cc -o ${i%.c} $i
Isso deve compilar um arquivo especificado em i em um arquivo de saída no mesmo diretor, mas com o .c-subfix removido.