繁体   English   中英

./a.out:无法识别文件:文件被截断的collect2:错误:ld返回1退出状态?

[英]./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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM