从链接器的角度详细分析g++报错: (.text+0x24): undefined reference to `main'

这篇具有很好参考价值的文章主要介绍了从链接器的角度详细分析g++报错: (.text+0x24): undefined reference to `main'。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':

(.text+0x24): undefined reference to `main'

collect2: error: ld returned 1 exit status

 

 在使用g++编译链接两个C++源文件main.cpp以及VecAdd.cpp时出现了以上编译报错。main.cpp中引用了VecAdd.cpp中定义的函数vecAdd来实现两个向量的加法。我们先说原因,再来分析一下g++为什么会报这样的错误。出现这个error的根本原因是错误地将g++命令行指令

linux> g++ -o main main.cpp VecAdd.cpp 

写成了

linux> g++ -o main.cpp VecAdd.cpp 

这样,g++会认为我们想要对VecAdd.cpp进行编译,得到一个名为main.cpp的可执行文件。而违背了我们的本意:将main.cpp与VecAdd.cpp编译并链接,得到可执行文件main. 在实验下,以上错误的指令不仅达不成我们的目的,还会将我们的C++源文件main.cpp给吃掉,很傻:

从链接器的角度详细分析g++报错: (.text+0x24): undefined reference to `main'

再从链接器的角度审视一下这个错误:第一行的目录/usr/bin/ld是链接器的路径,第二行的(.text+0x24)表示目标文件出现错误的地方,也就是VecAdd.cpp对应的ELF格式的目标文件.text这一节(代码段)中地址偏移为0x24的地方。这里的undefined reference to main是什么意思? 一开始作者以为是对“main”这个符号的引用没有被定义,后来发现不是这样。做了实验后,发现真正的原因是:“在VecAdd.cpp中没有定义main函数”。我们编写了一个test.cpp.其中只有一条变量定义语句:

//test.cpp
int a = 5;

使用指令

linux> g++ -o test test.cpp

来将test.cpp编译成可执行文件,发现链接器报了同样的错误:

从链接器的角度详细分析g++报错: (.text+0x24): undefined reference to `main'

 于是,问题得到了解答:g++ 的 -o 选项是将源代码编译成可执行文件,而C++源程序的程序入口是main函数,在最初的例子中:

linux> g++ -o main.cpp VecAdd.cpp 

由于错误输入,这条指令这是将VecAdd.cpp编译成名为main.cpp的可执行文件,而VecAdd.cpp中实现的是向量加法函数vecAdd,该源文件并没有主函数main(),于是就出现了"undefined reference to main"的链接器报错。

可以通过使用IDE、编写shell脚本、使用cmake工具等更安全的工具,从而减少这样的失误带来的问题。文章来源地址https://www.toymoban.com/news/detail-710715.html

到了这里,关于从链接器的角度详细分析g++报错: (.text+0x24): undefined reference to `main'的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt软件打包后报错“无法定位程序输入点于动态链接库.exe上。”解决办法(超详细,看完不会怪我)

    目录  前言 一、出现类似如下界面:  二、通过尝试分析,这个界面出现的原因是因为自己没有设置环境变量 三、其次右击打开主菜单,选择系统选项 四、选择右边的高级系统设置  五、点击环境变量 六、再系统变量里面找到Path路径 七、点击编辑添加系统环境变量,将自

    2024年02月15日
    浏览(60)
  • 比特币/以太坊/加密货币/网络/区块链/钱包助记词:密码学的角度上,24个单词比12个单词更安全吗

    我们从密码学角度来聊聊助记词。 随着区块链钱包的发展和分层确定性(HD)钱包技术的普及,越来越多的用户开始熟悉了一个叫“助记词”的概念,很多人都已经习惯了从一开始使用一个钱包的时候,就先抄好单词认真保管,并且他们对于助记词的重要性也有了很深刻的理

    2024年02月12日
    浏览(73)
  • Unity中UGUI的Text实现超链接点击的解决方案

    1、同一个Text内可以实现多个不同字符区域的点击; 2、适配了中文、英文、韩文、日文、阿拉伯语等,更多语种待测试; 1、文本框内使用富文本,见截图 2、要使该文本的超链接功能生效,调用即可: 可以设置回调的灵活性就比较高了,各位自己扩展 https://github.com/Panda00

    2024年02月07日
    浏览(44)
  • unity ugui text 超链接和下划线,支持部分富文本格式

    unity版本:2021.3.6f1 局限性: 1.测试发现不能使用 size 富文本标签, 2.同一文本不能设置不同颜色的超链接文本 其它:代码中注释掉使用innerTextColor的地方,可以使用富文本设置超链接颜色, 但是下划线是文本本身颜色 项目需要用到该功能, 搜索和参考了很多文章,要么不支

    2024年02月03日
    浏览(45)
  • WIN11从MSDN重新安装后 应用商店打不开 报错 0x80131500 0x00000194 报错 0x80240438

    简单记录下 WIN11从MSDN重新安装后 应用商店打不开 报错 0x80131500 0x00000194 报错 0x80240438 系统刚刚装好 更改TLS无效 WSReset无效 重置应用 关闭代理 均无效 复制此网站 https://www.microsoft.com/store/productId/9WZDNCRFJBMP 访问此网站 https://store.rg-adguard.net/ 通道RP 粘贴 搜索X64 下载所有标黄的

    2024年02月05日
    浏览(45)
  • 【100个 Unity实用技能】☀️ | UGUI Text中加入超链接文本,可直接点击跳转

    老规矩,先介绍一下 Unity 的科普小知识: Unity 是 实时3D互动内容创作和运营平台 。 包括 游戏开发 、 美术 、 建筑 、 汽车设计 、 影视 在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和

    2024年02月08日
    浏览(52)
  • CSS(二)-- 选择器的运用(针对基本选择器和复合选择器的详细解析)

    目录 1.  选择器的作用  2.  选择器的分类  3.  基本选择器 3.1  标签选择器 3.2  类选择器 3.3  id 选择器 小拓展: 3.4  通配符选择器 小总结: 4.  复合选择器(记忆) 4.1  子代选择器 4.2  后代选择器 小拓展: 4.3  交集选择器 4.4  并集选择器 选择器(选择符)就是 根据不

    2024年02月02日
    浏览(44)
  • 【论文阅读24】Better Few-Shot Text Classification with Pre-trained Language Model

    论文标题:Label prompt for multi-label text classification(基于预训练模型对少样本进行文本分类) 发表时间:2021 领域:多标签文本分类 发表期刊:ICANN(顶级会议) 相关代码:无 数据集:无 最近,预先训练过的语言模型在许多基准测试上都取得了非凡的性能。通过从一个大型的

    2024年02月14日
    浏览(45)
  • 主成分分析(PCA)——矩阵角度推导

    最近机器学习课上正式讲了主成分分析,只是老师说的很快,我并没有完全理解。随后我搜了很多关于这方面的讲解来进行理解,仅CSDN上就有很多讲的很好的文章,从协方差矩阵角度进行说明,基本上我也都理解了。但另一方面我发现可以结合我最近学的矩阵分析,从纯矩阵

    2024年03月15日
    浏览(36)
  • 从安全角度分析Angular本地存储

    随着Web应用程序的不断增长,前端开发人员慢慢意识到使用浏览器提供的本地存储技术可以在不使用外部数据库的情况下方便地保存应用程序的数据。Angular作为目前最流行的前端框架之一,也在其API中提供了许多本地存储技术的支持。但是,在使用本地存储时,安全性问题也

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包