当我使用.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
文件
答案 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。