Chr*_*ngs 7 c linker-errors undefined-reference undefined-symbol
我收到了以下错误,并且不能为我的生活弄清楚我做错了什么.
$ 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
Run Code Online (Sandbox Code Playgroud)
main.c中:
#include <stdio.h>
#include "wtf.h"
main(){
wtf();
}
Run Code Online (Sandbox Code Playgroud)
wtf.h:
void wtf();
Run Code Online (Sandbox Code Playgroud)
wtf.c:
void wtf(){
printf("I never see the light of day.");
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我将整个函数包含在头文件中而不仅仅是签名中,那么它就符合要求,因此我知道wtf.h被包含在内.为什么编译器看不到wtf.c?或者我错过了什么?
问候.
qrd*_*rdl 12
你需要链接wtf你的main.最简单的方法将它们编译在一起 - gcc将为你链接'em,就像这样:
gcc main.c wtf.c -o main
Run Code Online (Sandbox Code Playgroud)
更长的方式(单独编译wtf):
gcc -c wtf.c
gcc main.c wtf.o -o main
Run Code Online (Sandbox Code Playgroud)
更长时间(单独的编译和链接)
gcc -c wtf.c
gcc -c main.c
gcc main.o wtf.o -o main
Run Code Online (Sandbox Code Playgroud)
而不是最后一次gcc调用,您可以ld直接以相同的效果运行.