当我使用cc
命令编译.c
文件时,它会创建一个a.out
可执行文件。我注意到它在我的当前目录中创建a.out
文件。有没有办法使a.out
文件与我碰巧在系统中的.c
文件在同一个目录下创建?UNIX cc可执行文件位置
例如如果我当前的路径是~/desktop
,我在键入命令:
cc path/to/my/file/example.c
它创建a.out
文件中~/desktop
目录。我想创建a.out
文件path/to/my/file/a.out
当我使用cc
命令编译.c
文件时,它会创建一个a.out
可执行文件。我注意到它在我的当前目录中创建a.out
文件。有没有办法使a.out
文件与我碰巧在系统中的.c
文件在同一个目录下创建?UNIX cc可执行文件位置
例如如果我当前的路径是~/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
我不知道如何archieve,你想要什么(自动更换),但我想你可以用一些像这样的庆典做:(我在脚本较差,未经测试,可能是错误的):
i = "a/path/to/a/file.c" cc -o ${i%.c} $i
这应该C将i中指定的文件复制到同一目录中的输出文件中,但删除了.c后缀。
除了那些已经被张贴的答案(而哪些有帮助),我建议学习如何编写一个'Makefile'(如果你的项目可能会变得更大,可能会使用autoconf/automake)。 – Bruno 2010-09-01 12:44:18