Вопрос

Когда я компилируюсь .c Файл с использованием cc команда, это создает a.out исполняемый. Я заметил, что это создает a.out Файл внутри моего текущего каталога. Есть ли способ сделать a.out файл быть создан в том же каталоге, что и .c Файл везде, где я должен быть в системе?

Например, если мой текущий путь ~/desktop И я введите команду:

cc path/to/my/file/example.c

Это создает a.out Файл в ~/desktop каталог. Я хотел бы, чтобы это создать a.out вспомогательный path/to/my/file/a.out

Это было полезно?

Решение

Вам придется использовать -o-переключатель каждый раз, когда вы звоните CC:

cc -o path/to/my/file/a.out path/to/my/file/example.c

Или вы можете сделать сценарий обертки, как это:

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

Тогда вы можете вызвать

./mycc path/to/my/file/example.c

И это будет, в свою очередь, позвонит

cc -o "path/to/my/file/a.out" path/to/my/file/example.c

Конечно, вы можете поставить MyCC в $ Path, чтобы вы могли назвать это:

mycc path/to/my/file/example.c

Другие советы

Вы можете дать флаг «-O», чтобы определить выходной файл. Например:

cc path/to/my/file/example.c -o path/to/my/file/a.out

Да, с -o.

cc path/to/my/file/example.c -o path/to/my/file/a.out

Это может быть не то, что вы ищете, но вы можете легко перенаправить вывод компиляции с помощью -o Siwtch нравится это:

cc -o /a/dir/output b/dir/input.c

Я не знаю, как архив, то, что вы хотите (автоматическое замена), но я думаю, вы можете сделать это с каким-то Bash, как это: (я беден в сценарии, непроверенных и может быть неправильным):

i = "a/path/to/a/file.c" cc -o ${i%.c} $i

Это должно скомпилировать файл, указанный в I в выходной файл в том же DIR, но с удаленным .C-Suffix.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top