Linux Ubuntu18.04 gcc 编译时报错->在函数‘_start’中: (.text+0x20):对‘main’未定义的引用

当使用GCC编译出现'对'main'未定义的引用'错误时,问题可能不在于main函数本身。作者通过检查代码和Makefile发现,错误源于Makefile中的编译选项大小写错误及头文件包含位置不正确。修复包括将'-CO'改为'-c',以及调整头文件的#include位置。最终成功编译并运行程序。
摘要由CSDN通过智能技术生成

使用gcc编译时出现 :(.text+0x20):对‘main’未定义的引用

错误显示

/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o:在函数‘_start’中:
(.text+0x20):对‘main’未定义的引用
collect2: error: ld returned 1 exit status

在这里插入图片描述

解决办法

刚开始在CSDN搜索了很多方法,对我的错误都没有解决的效果,直到后来我发现有可能是我代码写错的原因,并不是!!main()函数没写或者是写错的原因!

我的过程

我写了3个文件:hello1.c hello2.c hello2.h 其内容如下:
查看文件内容命令:

cat hello1.c hello2.c hello2.h

显示:
在这里插入图片描述
我发现这写的代码和之前写的不太一样:#include <stdio.h>应该放在.h文件上。
于是,修改为:
在这里插入图片描述
这样比较简洁一点,其实两种都可以的,刚刚试了一遍。

我的错误是因为:

我写把gcc 的 "-c -o: 写成大写了, 应该是小写的。
其次,我是使用 makefile 编译的。

makefile内容:
在这里插入图片描述

输入命令:make,显示:
在这里插入图片描述
输入运行命令:./hello ,显示:
在这里插入图片描述

make、Makefile 小知识

什么是make?什么是Makefile?其主要作用是什么?默认情况下,GNU make 工具在当前工作目录按什么顺序搜索makefile?

答:
make:

  • make是Linux操作系统中用于管理软件项目的一种工具,能够高效地将项目文件组织起来。

  • make是一个命令工具,它用来解释makefile中定义的指令或规则。

Makefile:

  • makefile文件用来描述源程序之间的相互关系并自动维护编译工作,即描述了整个工程的编译、连接等规则。其中包括:工程中哪些源文件需要编译以及如何编译、需要创建哪些库文件以及如何创建这些库文件,如何最后产生可执行文件。

  • GNU make 工具在当前工作目录下按照文件名顺序寻找
    makefile文件读取并执行,查找的文件名顺序为:“GNUmakefile”、“makefile”、“Makefile”。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Milky_Way_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值