当我编译使用.c命令cc文件,它创建一个a.out可执行文件。我注意到,它创建我的当前目录下的文件a.out。有没有一种方法,使在同一目录a.out文件中创建的文件.c无论我碰巧是在系统上?

例如,如果我的电流路径是~/desktop我在命令输入:

cc path/to/my/file/example.c

它创建在a.out目录中的文件~/desktop。我想以创建在a.outpath/to/my/file/a.out文件

有帮助吗?

解决方案

您将不得不使用每次调用立方厘米时间-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

其他提示

可以得到“-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-后缀移除。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top