Расположение исполняемого файла cc UNIX - PullRequest
3 голосов
/ 01 сентября 2010

Когда я компилирую файл .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

Ответы [ 4 ]

5 голосов
/ 01 сентября 2010

Вам нужно будет использовать ключ -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
2 голосов
/ 01 сентября 2010

Вы можете задать флаг "-o" для определения выходного файла. Например:

cc path/to/my/file/example.c -o path/to/my/file/a.out
1 голос
/ 01 сентября 2010

Это может быть не то, что вы ищете, но вы можете легко перенаправить вывод компиляции, используя -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, в выходной файл в том же каталоге, но с удаленным суффиксом .c.

1 голос
/ 01 сентября 2010

Да, с -o.

cc path/to/my/file/example.c -o path/to/my/file/a.out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...