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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top