[英]./a.out: file not recognized: File truncated collect2: error: ld returned 1 exit status?
我写了一个小程序,用一个从单独的函数返回的质数填充数组。 该程序编译良好,但是当我运行可执行文件时,出现上述错误。 这是我的源代码。 我不太确定为什么会这样。 这里有人可以帮我编译和运行以下代码吗? 我想知道笔记本电脑上是否有东西,但我真的不知道。 我正在运行linux mint,如果有帮助的话。
#include <stdio.h>
int prime(int x);
int main()
{
int intergers,index,return_value;
int array[100]={2}; /*intialize array[0] being 2*/
for(index=1;index<100;index=index+1) /*begin array index at array[1]*/
{
for(intergers=3;intergers<102;intergers=intergers+1) /*check for prime numbers starting from 3*/
{
return_value = prime(intergers);
if(return_value==999)
array[index]=-1;
else
array[index]=return_value;
}
}
printf("hello world");
}
int prime(int x)
{
int divisors,count,value;
for(divisors=2;divisors<x;divisors=divisors+1)
{
if(x%divisors==0)
{
value=999;
break;
}
else
{
value=x;
}
}
return value;
}
以下代码使用以下命令从SuSE SLES 11上的gcc编译器进行编译和链接,没有错误或警告: gcc -Wall -o test test.c
#include <stdio.h>
int prime(int x);
int main()
{
int intergers,index,return_value;
int array[100]={2}; /*intialize array[0] being 2*/
for(index=1;index<100;index=index+1) /*begin array index at array[1]*/
{
for(intergers=3;intergers<102;intergers=intergers+1) /*check for prime numbers starting from 3*/
{
return_value = prime(intergers);
if(return_value==999)
array[index]=-1;
else
array[index]=return_value;
}
}
printf("hello world\n");
return(0); // Added this line to rid compiler: warning: control reaches end of non-void function
}
int prime(int x)
{
int divisors,/* count, */ value;
for(divisors=2;divisors<x;divisors=divisors+1)
{
if(x%divisors==0)
{
value=999;
break;
}
else
{
value=x;
}
}
return value;
}
然后我执行了程序:
> ./test
hello world
该代码按预期执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.