题
当我编译使用.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
文件
解决方案
您将不得不使用每次调用立方厘米时间-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-后缀移除。
不隶属于 StackOverflow