Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-程序编译,但无法提供参数_C_Shell - Fatal编程技术网

C-程序编译,但无法提供参数

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变量的一部分,否则即使正在

我在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变量的一部分,否则即使正在运行的二进制文件位于当前目录中,您所拥有的也不会起作用。

这不是编译问题,而是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.
--匿名谢谢,我会研究它。