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

use*_*251 4 c

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

#include "libhello.h"

int main(void) {
 hello();
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

libhello.h

void hello(void);
Run Code Online (Sandbox Code Playgroud)

libhello.c

#include <stdio.h>

void hello(void) {
  printf("Hello, library world.\n");
}
Run Code Online (Sandbox Code Playgroud)

我已经在终端中使用了命令

gcc demo_use.c -o test
Run Code Online (Sandbox Code Playgroud)

错误 体系结构x86_64的未定义符号:“ _ hello”,

引用自:ccZdSQP3.o中的_main

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

Sou*_*osh 7

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

gcc demo_use.c libhello.c -o test
Run Code Online (Sandbox Code Playgroud)

否则,hello()将缺少功能的定义。因此,在链接时,链接器将引发undefined symbol错误。