我在Mac上,在终端我正在编译我的程序
gcc -Wall -g -o example example.c
它编译(没有错误),但是当我尝试提供命令行参数时
example 5 hello how are you
终端以“-bash:example:command not found”
响应如何在编译后提供我想提供的参数?
答案 0 :(得分:5)
使用路径运行它:
./example 5 hello how are you
除非example
二进制文件所在的目录是PATH变量的一部分,否则即使您运行的二进制文件位于当前目录中,您所拥有的内容也将无效。
答案 1 :(得分:5)
这不是编译问题,而是shell的问题。当前目录不在PATH
中(请查看echo $PATH
并使用which
了解shell如何将其用于某些特定程序,例如which gcc
)。
我建议使用程序的显式文件路径测试程序,如
./example 5 hello how are you
您可以修改~/.bashrc
以在.
的末尾添加PATH
。有pro和conses(特别是一些可能的安全问题,如果你的当前目录有时是"恶意"可能是/tmp
可能是:坏人可能会放置{{1}这是gcc
的符号链接,因此如果您这样做,则需要在/bin/rm
的末尾添加.
。
不要忘记学习如何使用调试器(如PATH
)。在C(或C ++)中编码时,此技能至关重要。也许还要考虑升级你的gdb
(Apple不要及其目前的GPLv3许可证,所以不要分发最近的许可证;只需gcc
并注意最新的released GCC今天是4.8.1)。
答案 2 :(得分:1)
./example 5 Hello how are you
是您正在寻找的语法。
This article提供了一个很好的解释,说明为什么这很重要。
基本上,当你点击Enter
时,shell会检查第一组字符是否是绝对路径。如果不是,它会检查PATH
变量以查找具有您尝试运行的命令名称的可执行文件。如果它被发现,它将被运行,否则它将崩溃并燃烧,你会变得非常难过。