UNIX cc可执行文件位置

时间:2010-09-01 11:59:32

标签: c unix executable cc

当我使用.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 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

是的,-o

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

答案 3 :(得分:1)

它可能不是您正在寻找的,但您可以使用-o siwtch轻松地重定向编译的输出,如下所示:

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

我不知道,如何实现,你想要什么(自动更换),但我想你可以用这样的一些bash做到:(我的脚本很差,未经测试,可能是错的):< / p>

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

这应该将i中指定的文件编译到同一目录中的输出文件中,但删除了.c-suffix。