3

.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

4 回答 4

5

每次调用 cc 时都必须使用 -o 开关:

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
于 2010-09-01T12:09:06.700 回答
2

您可以给出“-o”标志来定义输出文件。例如:

cc path/to/my/file/example.c -o path/to/my/file/a.out
于 2010-09-01T12:02:36.437 回答
1

是的,与-o.

cc path/to/my/file/example.c -o path/to/my/file/a.out
于 2010-09-01T12:02:10.353 回答
1

它可能不是您想要的,但您可以使用-osiwtch 轻松重定向编译的输出,如下所示:

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

我不知道,如何归档,你想要什么(自动替换),但我想你可以用这样的 bash 来做到这一点:(我的脚本很差,未经测试,可能是错误的):

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

这应该将 i 中指定的文件编译为同一目录中的输出文件,但删除 .c 后缀。

于 2010-09-01T12:02:47.847 回答