C-程序编译,但无法提供参数
我在Mac电脑上,在终端上编译我的程序C-程序编译,但无法提供参数,c,shell,C,Shell,我在Mac电脑上,在终端上编译我的程序 gcc -Wall -g -o example example.c 它可以编译(没有错误),但是当我尝试提供命令行参数时 example 5 hello how are you 终端响应“-bash:example:command not found” 编译后,我应该如何提供要提供的参数?使用路径如下运行: ./example 5 hello how are you 除非示例二进制文件所在的目录是PATH变量的一部分,否则即使正在
gcc -Wall -g -o example example.c
它可以编译(没有错误),但是当我尝试提供命令行参数时
example 5 hello how are you
终端响应“-bash:example:command not found”
编译后,我应该如何提供要提供的参数?使用路径如下运行:
./example 5 hello how are you
除非
示例
二进制文件所在的目录是PATH变量的一部分,否则即使正在运行的二进制文件位于当前目录中,您所拥有的也不会起作用。这不是编译问题,而是shell的问题。当前目录不在您的路径中(使用echo$PATH
查看,并使用which
了解shell如何将其用于某些特定程序,例如which gcc
)
我建议用一个显式的文件路径来测试你的程序,比如
./example 5 hello how are you
您可以编辑~/.bashrc
以在路径的末尾添加
。有优点也有缺点(特别是,如果您当前的目录碰巧是一个“恶意”目录,那么可能会出现一些安全问题,比如/tmp
可能是:坏人可能会在那里放一个gcc
,它是指向/bin/rm
的符号链接,因此如果您这样做,您需要在路径的末尾添加
)
不要忘记学习如何使用调试器(如gdb
)。在用C(或C++)编写代码时,这项技能是必不可少的。也可以考虑升级你的代码> GCC < /代码>(苹果不太喜欢它当前的GPLV3许可证,所以不要分发最近的一个;试试<代码> Gcc-V并注意最新的是4.4.1)。< /P> < P> <代码> /示例5你好。你是怎样的?<代码>是你正在寻找的语法。
这很好地解释了这一点的重要性
基本上,当您点击Enter
时,shell会检查第一组字符是否为绝对路径。如果不是,它会检查path
变量,以查找包含您试图运行的命令名称的可执行文件。如果找到,它将运行,但否则它将崩溃并烧掉,您将非常难过。您没有运行该程序。您的shell正在其$PATH
上查找名为example
的命令,该命令不存在。Run code Run.C code Run.
--匿名谢谢,我会研究它。