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

sh/bash/dash/ksh/zsh等Shell脚本
回复
kongpo
帖子: 3
注册时间: 2010-11-15 16:35

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

#1

帖子 kongpo » 2010-11-15 16:42

如题,在终端输入gcc filename.c 的时候实际执行的是gcc filename.c -o filename

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

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

不知道从何下手

求解帮忙 :em06
头像
会fly的青蛙
帖子: 66
注册时间: 2010-10-13 13:15

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

#2

帖子 会fly的青蛙 » 2010-11-15 16:48

修改gcc的源代码中处理命令行参数的部分,重新编译怎么样?嘿嘿,其实我不懂. 我一直用make,倒是没想过这个问题
没得玩了
头像
会fly的青蛙
帖子: 66
注册时间: 2010-10-13 13:15

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

#3

帖子 会fly的青蛙 » 2010-11-15 16:54

要不你写一个脚本,并命名为gcc,然后在脚本里处理好你说的命令行参数的问题,然后调用真正的gcc,把这个脚本所在目录加入路径并置于gcc所在目录即可使gcc命令实际运行这个冒牌脚本而不是真正的gcc
没得玩了
头像
Ubuntu与Linux
帖子: 1211
注册时间: 2010-06-09 19:57

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

#4

帖子 Ubuntu与Linux » 2010-11-15 16:54

可以用脚本,
我的是
gnome-terminal -x bash -c "gcc -g -o ${@%.c**}.out ${@};read"
(网上搜索后编辑的)
tsunli
帖子: 66
注册时间: 2005-05-25 0:10

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

#5

帖子 tsunli » 2010-11-15 17:40

make filename
kongpo
帖子: 3
注册时间: 2010-11-15 16:35

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

#6

帖子 kongpo » 2010-11-15 18:38

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

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

#7

帖子 kongpo » 2010-11-15 18:44

Ubuntu与Linux 写了:可以用脚本,
我的是
gnome-terminal -x bash -c "gcc -g -o ${@%.c**}.out ${@};read"
(网上搜索后编辑的)
不是很明白,能解释下吗?我的是macos
头像
会fly的青蛙
帖子: 66
注册时间: 2010-10-13 13:15

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

#8

帖子 会fly的青蛙 » 2010-11-16 12:01

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 之前的目录中
没得玩了
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

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

#9

帖子 tusooa » 2010-11-23 18:37

代码: 全选

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

代码: 全选

] ls -ld //
ywgx
帖子: 2
注册时间: 2010-12-03 14:34

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

#10

帖子 ywgx » 2011-01-29 21:43

kongpo 写了:如题,在终端输入gcc filename.c 的时候实际执行的是gcc filename.c -o filename

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

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

不知道从何下手

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