首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C链接错误:未定义对'main‘的引用

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

Stack Overflow用户
提问于 2013-04-09 22:47:37
回答 3查看 212.6K关注 0票数 41

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

代码语言:javascript
复制
$ 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

我只有一个main函数,它在runexp中。表格是

代码语言:javascript
复制
int main(void) {
    ...; 
    return 0;
}

有没有想过为什么我会得到这个错误?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-09 22:51:58

您应该在-o选项之后提供输出文件名。在本例中,runexp.o被视为输出文件名,而不是输入目标文件,因此您的main函数是未定义的。

票数 33
EN

Stack Overflow用户

发布于 2013-04-09 22:52:45

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

您需要添加它:

代码语言:javascript
复制
$ gcc -o runexp runexp.c scd.o data_proc.o -lm -fopenmp
票数 10
EN

Stack Overflow用户

发布于 2017-02-01 10:12:51

通常,您可以通过以下方式编译大多数.c文件:

gcc脚下c -o脚下。它可能会根据您使用的#includes或是否有任何外部.h文件而有所不同。通常,当您有一个C文件时,它看起来有点像下面这样:

代码语言:javascript
复制
#include <stdio.h>
    /* any other includes, prototypes, struct delcarations... */
    int main(){
    */ code */
}

当我得到一个“未定义的对main的引用”时,这通常意味着我有一个没有int main()的.c文件。如果你是第一次学习java,这是一种可以理解的混淆方式,因为在Java中,你的代码通常如下所示:

代码语言:javascript
复制
//any import statements you have
public class Foo{
    int main(){}
 }

我建议看看你的顶部是否有int main()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15905119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档