分页: 1 / 1

如何让终端输入gcc filename.c时,实际执行gcc filename.c -o filename

发表于 : 2010-11-15 16:42
kongpo
如题,在终端输入gcc filename.c 的时候实际执行的是gcc filename.c -o filename

说穿了就是生成的可执行文件名与原文件名保持一致

尝试过通过alias和$1实现失败

不知道从何下手

求解帮忙 :em06

Re: 如何让终端输入gcc filename.c时,实际执行gcc filename.c -o filename

发表于 : 2010-11-15 16:48
会fly的青蛙
修改gcc的源代码中处理命令行参数的部分,重新编译怎么样?嘿嘿,其实我不懂. 我一直用make,倒是没想过这个问题

Re: 如何让终端输入gcc filename.c时,实际执行gcc filename.c -o filename

发表于 : 2010-11-15 16:54
会fly的青蛙
要不你写一个脚本,并命名为gcc,然后在脚本里处理好你说的命令行参数的问题,然后调用真正的gcc,把这个脚本所在目录加入路径并置于gcc所在目录即可使gcc命令实际运行这个冒牌脚本而不是真正的gcc

Re: 如何让终端输入gcc filename.c时,实际执行gcc filename.c -o filename

发表于 : 2010-11-15 16:54
Ubuntu与Linux
可以用脚本,
我的是
gnome-terminal -x bash -c "gcc -g -o ${@%.c**}.out ${@};read"
(网上搜索后编辑的)

Re: 如何让终端输入gcc filename.c时,实际执行gcc filename.c -o filename

发表于 : 2010-11-15 17:40
tsunli
make filename

Re: 如何让终端输入gcc filename.c时,实际执行gcc filename.c -o filename

发表于 : 2010-11-15 18:38
kongpo
会fly的青蛙 写了:要不你写一个脚本,并命名为gcc,然后在脚本里处理好你说的命令行参数的问题,然后调用真正的gcc,把这个脚本所在目录加入路径并置于gcc所在目录即可使gcc命令实际运行这个冒牌脚本而不是真正的gcc
bash怎么写,我写完运行之后都是乱码= =,能不能写个给我看下,bash我不是很懂 :em01

Re: 如何让终端输入gcc filename.c时,实际执行gcc filename.c -o filename

发表于 : 2010-11-15 18:44
kongpo
Ubuntu与Linux 写了:可以用脚本,
我的是
gnome-terminal -x bash -c "gcc -g -o ${@%.c**}.out ${@};read"
(网上搜索后编辑的)
不是很明白,能解释下吗?我的是macos

Re: 如何让终端输入gcc filename.c时,实际执行gcc filename.c -o filename

发表于 : 2010-11-16 12:01
会fly的青蛙
kongpo 写了:
会fly的青蛙 写了:要不你写一个脚本,并命名为gcc,然后在脚本里处理好你说的命令行参数的问题,然后调用真正的gcc,把这个脚本所在目录加入路径并置于gcc所在目录即可使gcc命令实际运行这个冒牌脚本而不是真正的gcc
bash怎么写,我写完运行之后都是乱码= =,能不能写个给我看下,bash我不是很懂 :em01
其实我对 bash也不懂,你看看我写的这个脚本,perl


#!/usr/bin/perl
use warnings;
use strict;
my $orgi_args=join (' ',@ARGV);
my $objname;
foreach (@ARGV)
{
if(m/(.*)\.c/)
{
$objname=$1;
}
}
`/usr/bin/gcc -o $objname $orgi_args`;

它的作用是把你输入的参数中最后一个 .c文件的名字作为输出目标文件名,然后 调用 /usr/bin/gcc 。
使用方法是把上面的内容拷贝下来,复制到一个名为 gcc的文件中并修改其文件权限为可执行 。然后把它所在的目录加入path ,并置于 /usr/bin 之前 . 或者把它复制到一个 已经在 PATH中并且位于 /usr/bin 之前的目录中

Re: 如何让终端输入gcc filename.c时,实际执行gcc filename.c -o filename

发表于 : 2010-11-23 18:37
tusooa

代码: 全选

gcc()
{
    if [[ $# == 1 && $1 == *.c ]] ; then
        command gcc -o "${1%.c}" "$1"
    else
        command gcc "$@"
    fi
}

Re: 如何让终端输入gcc filename.c时,实际执行gcc filename.c -o filename

发表于 : 2011-01-29 21:43
ywgx
kongpo 写了:如题,在终端输入gcc filename.c 的时候实际执行的是gcc filename.c -o filename

说穿了就是生成的可执行文件名与原文件名保持一致

尝试过通过alias和$1实现失败

不知道从何下手

求解帮忙 :em06
auto.vim可以完美解决你的问题
http://www.vim.org/scripts/script.php?script_id=3341