我在 Mac 上,在终端上我正在编译我的程序
gcc -Wall -g -o example example.c
它可以编译(没有错误),但是当我尝试提供命令行参数时
example 5 hello how are you
终端响应“-bash:示例:找不到命令”
编译后应该如何提供我想提供的参数?
使用路径像这样运行它:
./example 5 hello how are you
除非example
二进制文件所在的目录是 PATH 变量的一部分,否则即使您正在运行的二进制文件位于当前目录中,您所拥有的也不会起作用。
这不是编译问题,而是您的 shell 的问题。当前目录不在您的目录中PATH
(查看 echo $PATH
并使用which
以了解 shell 如何将其用于某些特定程序,例如which gcc
)。
我建议使用程序的显式文件路径来测试您的程序,例如
./example 5 hello how are you
您也许可以编辑您的~/.bashrc
以添加.
到您的PATH
. 有利有弊(特别是一些可能的安全问题,如果您的当前目录碰巧有时是一个“恶意”目录,/tmp
可能是这样的:坏人可能会放gcc
一个符号链接,/bin/rm
因此您需要.
在末尾添加你的PATH
如果你这样做)。
不要忘记学习如何使用调试器(如gdb
)。在用 C(或 C++)编码时,这项技能是必不可少的。也许还考虑升级您的gcc
(Apple 不太喜欢其当前的 GPLv3 许可证,因此不要分发最近的许可证;尝试 gcc -v
并注意最新发布的 GCC是今天 4.8.1)。
./example 5 Hello how are you
是您要查找的语法。
这篇文章很好地解释了为什么这很重要。
基本上,当您点击 时Enter
,shell 会检查第一组字符是否是绝对路径。如果不是,它会检查PATH
变量以查找具有您尝试运行的命令名称的可执行文件。如果找到了,它就会运行,否则它会崩溃和燃烧,你会变得非常难过。