Исполняемое местоположение Unix CC
-
26-09-2019 - |
Вопрос
Когда я компилируюсь .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.