gpt4 book ai didi

c - 使用头文件时出现 undefined symbol 错误

转载 作者:太空狗 更新时间:2023-10-29 17:06:30 25 4
gpt4 key购买 nike

我遇到了以下错误,并且终生无法弄清楚我做错了什么。

$ gcc main.c -o main

Undefined symbols:
"_wtf", referenced from:
_main in ccu2Qr2V.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

ma​​in.c:

#include <stdio.h>
#include "wtf.h"

main(){
wtf();
}

wtf.h:

void wtf();

wtf.c:

void wtf(){
printf("I never see the light of day.");
}

现在,如果我在头文件中包含整个函数而不仅仅是签名,它符合要求,所以我知道包含了 wtf.h。为什么编译器看不到 wtf.c?还是我遗漏了什么?

问候。

最佳答案

您需要将 wtf 与您的 main 链接起来。将它们编译在一起的最简单方法 - gcc 将为您链接它们,如下所示:

gcc main.c wtf.c -o main

更长的方式(wtf 的单独编译):

gcc -c wtf.c
gcc main.c wtf.o -o main

甚至更长(单独编译和链接)

gcc -c wtf.c
gcc -c main.c
gcc main.o wtf.o -o main

您可以直接运行 ld 而不是最后一次 gcc 调用,效果相同。

关于c - 使用头文件时出现 undefined symbol 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2972096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com