C链接错误:对'main'的未定义引用

Nic*_*ole 26 c linker

我已经阅读了关于这个主题的其他答案,不幸的是他们没有帮助我.我试图将几个c程序链接在一起,我收到错误响应:

$ gcc -o runexp.o scd.o data_proc.o -lm -fopenmp
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
make: * [runexp] Error 1
Run Code Online (Sandbox Code Playgroud)

我只有一个主要功能,它在runexp.表格是

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

有关为什么我会收到此错误的任何想法?谢谢!

VHa*_*avy 25

您应该在-o选项后提供输出文件名.在您的情况下runexp.o被视为输出文件名,而不是输入对象文件,因此您的main函数是未定义的.

  • 或者只是删除`-o`选项并使用传统的`./ a.out`,这是一个美丽的名字;) (3认同)

unw*_*ind 6

您没有包含main()编译时包含的C文件,因此链接器没有看到它.

你需要添加它:

$ gcc -o runexp runexp.c scd.o data_proc.o -lm -fopenmp
Run Code Online (Sandbox Code Playgroud)