编译C程序时架构x86_64的未定义符号

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

#include "libhello.h" int main(void) { hello(); return 0; } 

libhello.h

 void hello(void); 

libhello.c

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

我在终端中使用了命令

 gcc demo_use.c -o test 

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

引自:ccZdSQP3.o中的_main

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

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

 gcc demo_use.c libhello.c -o test 

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