编译C程序时体系结构x86_64的未定义符号

时间:2015-03-16 10:00:33

标签: c

我有一个简单的程序 的 demo_use.c

#include "libhello.h"

int main(void) {
 hello();
 return 0;
}

libhello.h

void hello(void);

libhello.c

#include <stdio.h>

void hello(void) {
  printf("Hello, library world.\n");
}

我在终端中使用了命令

gcc demo_use.c -o test

错误 架构x86_64的未定义符号:&#34; _hello&#34;,

引自:ccZdSQP3.o中的_main

ld:找不到架构的符号x86_64 collect2:ld返回1退出状态

1 个答案:

答案 0 :(得分:4)

您需要将两个源文件一起编译以生成二进制文件。使用

gcc demo_use.c libhello.c -o test

否则,hello()函数的定义将不存在。因此,在链接时,链接器将抛出undefined symbol错误。