编译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
错误。