0

我在 Mac 上,在终端上我正在编译我的程序

    gcc -Wall -g -o example example.c

它可以编译(没有错误),但是当我尝试提供命令行参数时

   example 5 hello how are you

终端响应“-bash:示例:找不到命令”

编译后应该如何提供我想提供的参数?

4

3 回答 3

5

使用路径像这样运行它:

   ./example 5 hello how are you

除非example二进制文件所在的目录是 PATH 变量的一部分,否则即使您正在运行的二进制文件位于当前目录中,您所拥有的也不会起作用。

于 2013-10-01T17:55:01.573 回答
4

这不是编译问题,而是您的 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)。

于 2013-10-01T17:55:56.280 回答
1

./example 5 Hello how are you是您要查找的语法。

这篇文章很好地解释了为什么这很重要。

基本上,当您点击 时Enter,shell 会检查第一组字符是否是绝对路径。如果不是,它会检查PATH变量以查找具有您尝试运行的命令名称的可执行文件。如果找到了,它就会运行,否则它会崩溃和燃烧,你会变得非常难过。

于 2013-10-01T17:56:42.347 回答