“参数太少”错误尝试运行我的编译程序

时间:2012-01-27 02:07:02

标签: c compiler-construction

我正在尝试编写代码以刷新我的记忆准备自己的课程。

int main(){

  int x;

  for( x = 0;x < 10; x++){
    printf("Hello world\n");
  }

  return 0;

}

但是当我试图运行时,我得到Too few arguments

我使用gcc -o repeat file.c编译了上面的代码然后运行此代码我只需输入repeat

很抱歉,如果这是一个愚蠢的问题,那么自从我参加介绍课以来已经有一段时间了。

3 个答案:

答案 0 :(得分:2)

键入

filename

在提示符下,您的操作系统会搜索路径。默认情况下,Linux不包含路径中的当前目录,因此您最终会运行类似/bin/filename的内容,因为它需要参数而抱怨。要找出实际运行的文件,请尝试

which filename

要运行在工作目录中创建的filename文件gcc,请使用

./filename

答案 1 :(得分:1)

Your code compiles fine。尝试:

gcc -o helloworld file.c
./helloworld

答案 2 :(得分:0)

更新:

根据最近的评论,问题是可执行文件名为repeat,而您使用的是csh或tcsh,因此repeat是内置命令。

键入./repeat而不是repeat

在提问时,不要忽略这样的细节;复制并粘贴您的源代码,您键入的任何命令以及您收到的任何消息。


可执行文件名为file,也是一个命令。

要运行您自己的程序,请键入

./file

编辑:

以上是基于以下假设的有根据的猜测:

  • 实际编译命令为gcc file.c -o filegcc -o file file.c;和
  • 如果您在没有参数的情况下调用它,预定义的file命令(man file获取信息)将产生该错误消息。

最初的问题是编译命令是gcc file.c;现在它说gcc -o filename file.c。 (如果不带参数运行它,file命令会输出不同的错误消息。

正确的方法是:

gcc file.c -o filename && ./filename

(我通常会调用可执行文件file来匹配源文件的名称,但你可以这样做。)

gcc命令(如果成功)会在当前目录中为您提供一个名为filename的可执行文件。 &&表示仅在第一个命令成功时执行第二个命令(如果没有编译,则尝试运行程序没有意义)。 ./filename明确表示要运行当前目录(filename)中的.可执行文件;否则它会搜索你的$PATH

如果收到错误消息Too few arguments,则该消息不是来自您的程序;除非明确打印出来,否则您将看不到该消息。解释必须是你正在运行其他程序。也许您的系统上已经有一个名为filename的命令。

所以试着这样做:

gcc file.c -o filename && ./filename

看看会发生什么;它应该运行你的程序。如果可行,请尝试输入

filename

看看它的作用。如果运行您的程序,请键入

type -a filename

which filename

查看您实际执行的内容。

为了避免这种情况,养成使用./whatever在当前目录中执行程序的习惯。

相关问题