架构x86_64的未定义符号在C中的含义是什么?

时间:2013-07-22 17:12:02

标签: c gcc compiler-errors

这是我的代码。

#include <stdio.h>

int main(){
int first;
int second;
int third;
float average=0.0;

    printf ("This program will find the average of 3 numbers.\n");
    delay(1000);
    printf ("Type the first number.\n");
    scanf ("%d", &first);
    printf ("Type the second number.\n");
    scanf ("%d", &second);
    printf ("Type the third number.\n");
    scanf ("%d", &third);
    average = (first+second+third)/2.0;
    printf ("The average of %d, %d, and %d is %.3f\n", first, second, third, average);

return (0);
}

当我使用gcc编译它时说

Undefined symbols for architecture x86_64:
  "_delay", referenced from:
      _main in cc62F0GD.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

我是编码的初学者。这是什么意思,我该如何解决?

4 个答案:

答案 0 :(得分:1)

您需要在#include<stdlib.h>函数的代码中包含delay()文件,该文件未在stdio.h中定义

但我建议不要使用它,而是使用大多数基于Unix的操作系统建议来自#include <unistd.h>的{​​{3}}函数。

unsigned int sleep(unsigned int seconds);

答案 1 :(得分:1)

使用sleep()代替延迟()

EX:sleep(1) = 1秒延迟

答案 2 :(得分:1)

修改

由于代码是在linux环境下运行的,因此您可以使用 sleep 而不是延迟。头文件是 unistd.h

答案 3 :(得分:0)

这里你得到的错误是表单加载器

ld: symbol(s) not found for architecture x86_64

我不确定但是检查您的可执行文件中是否存在符号。

使用 nm 命令检查可执行文件中存在的符号。

http://linux.die.net/man/1/nm

delay()使用GCC

不支持

sleep()

http://pubs.opengroup.org/onlinepubs/009695399/functions/sleep.html