我正在尝试编写代码以刷新我的记忆准备自己的课程。
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
很抱歉,如果这是一个愚蠢的问题,那么自从我参加介绍课以来已经有一段时间了。
答案 0 :(得分:2)
键入
时filename
在提示符下,您的操作系统会搜索路径。默认情况下,Linux不包含路径中的当前目录,因此您最终会运行类似/bin/filename
的内容,因为它需要参数而抱怨。要找出实际运行的文件,请尝试
which filename
要运行在工作目录中创建的filename
文件gcc,请使用
./filename
答案 1 :(得分:1)
gcc -o helloworld file.c
./helloworld
答案 2 :(得分:0)
更新:
根据最近的评论,问题是可执行文件名为repeat
,而您使用的是csh或tcsh,因此repeat
是内置命令。
键入./repeat
而不是repeat
。
在提问时,不要忽略这样的细节;复制并粘贴您的源代码,您键入的任何命令以及您收到的任何消息。
可执行文件名为file
,也是一个命令。
要运行您自己的程序,请键入
./file
编辑:
以上是基于以下假设的有根据的猜测:
gcc file.c -o file
或gcc -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
在当前目录中执行程序的习惯。