linux下编译出现multiple definition of 错误

从‘multiple definition of `yylloc’‘错误出发,解析Linux交叉编译U-Boot的依赖与冲突 本文深入解析Linux交叉编译U-Boot时遇到的'multiple definition of `yylloc''错误,探讨其根源在于GCC编译器的-fcommon与-fno-common选项变迁。提供了五种实战解决方案,包括修改源码、调整编译选项等,并分享防御性编程的最佳实践,帮助开发者有效解决类似编译冲突问题。 阅读详情

这个错误从表面上看,是出现了重复定义类或函数的情况,大部分都是确实是重复定义了,但是出现这样的重复定义的原因,即是不太容易获知,我这次出现这样错误,是由于Makefile和操作不当引起的错误。

       我是做了这样的操作后出现这种情况的,或许对类似的情况有所启发:

1. 编写Makefile文件,正常编译没有问题,编译生成了以下2个文件:

client.o v4l2-camara.o 

2. 这个时候,我把源文件改了个名称,改成了v4l2-camera.cpp,在没有make clean的情况下,再次编译:

这个时候目标文件有三个了

client.o v4l2-camara.o v4l2-camera.o

 

在链接时出错了,出现了multiple definition of 的错误。

3. 存细看了一下,Makefile生成的编译语句是这样的:

arm-linux-gnueabihf-g++ /home/workhome/av-monitor-client/debug/obj/client.o /home/workhome/av-monitor-client/debug/obj/v4l2-camara.o /home/workhome/av-monitor-client/debug/obj/v4l2-camera.o -o /home/workhome/av-monitor-client/debug/bin/avclient

也就是说v4l2-camara.o文件没有删除,其内容和v4l2-camera.o一样了,Makefile执行时照样会将它加入并链接生成avclient程序,这样就出现了重复定义的情况。

把这个v4l2-camara.o删除,或者Make clean后,重新编译,就不会出现这个错误了。

4. 其它情况

如果把静态函数的实现定义在头文件中,多个文件包含这个头文件,也会出现这个错误,比如将下列函数定义在头文件中:

AvmOutput* AvmOutput::GetInstance() { return AvmOutput::singleton(); }

这样所有引用这个头文件的地方都重新定义一遍,当然会报错了。

 

 

 

Ubuntu 22.04编译Linux内核踩坑记:解决‘multiple definition of yylloc’的完整心路历程 本文详细记录了在Ubuntu 22.04环境下编译Linux内核时遇到的‘multiple definition of yylloc’错误及其解决方案。通过分析版本差异、修改源代码及备份文件,最终成功解决问题,并提供了版本兼容性的系统指南和现代实践建议。 阅读详情

相关推荐

Linux C 中 multiple definition of ‘xxx‘

(2)在项目中,对于依赖的源文件夹中的所有.c文件都会被编译,如果其中一个.c文件被另外一个.c文件include,就像下面的代码一样,那么就会导致被包含的那个.c文件中定义的变量和函数被两次编译,从而导致重复定义。尽量不要使用.c文件包含.c文件,而使用头文件声明的方式调用另一个.c文件中的函数或者变量,否则容易忘记,导致重复定义。为了防止上述问题的出现,我们可以把需要用在多个源文件中的变量或函数集合到一个统一的文件中,然后在头文件中进行声明,在其他地方都用包含头文件的方式进行处理。

dreamliweiming的博客 2155

如何解决linux下编译出现的multiple definition of错误

今天,在编译quagga的过程中出现了multiple definition of的错误。该错误表示不同文件对同一变量进行了重复定义。因此,可以从以下几个方面来排查这个问题: 1. 是否定义了重复变量: 直观来讲,如果在已经引用的global.h中定义了变量v,那么在本文件之中,就不能再定义一个都是全局的变量。模块编译时虽然能够通过,但在链接过程中就会发现有多个变量,因此报错。解决办法...

weixin_33937778的博客 1118

RK3588-NANOPC-T6移植ubuntu+xenomai内核

更具网址下载相应的内核。导入到开发板并执行内核。

qq_42007446的博客 573

极低级错误引发的“multiple definition of `XXX''”

在文件x.c中声明定义了一个变量temp,在y.c中包含了x.h头文件,编译时遇到“multiple definition of `XXX''”,提示在y.c文件中重定义了temp。 反复检查代码,确定一切操作都无误,y.c文件中也确定没有定义temp,但错误依然存在。搞了半小时,终于找到错误的原因,原来是在y.c中include了x.c文件,而不是x.h。 低级错误形式如下: #inclu...

hhhlizhao的博客 394

cs231n作业 assignment 1 q1 q2 q3

请先看课程作业地址。有两种做作业的方法,一种是在google Colab上做 (需魔法),另一种就是下载到本地,但是我懒得在本地配置环境,太麻烦了,还得修改一些基础代码,我就直接在google colab上做了google colab 配置环境只需要跟着教程走就好了最后还有一题解答题懒得做的,这个题目做的没啥意思。让我们用简单写法来实现softmax的loss函数与梯度计算。

Leezed525的博客 9277

SCI、中科院1区算法应用:(BWO-CNN-BiGRU-Attention)白鲸优化深度学习-融合注意力机制预测程序代码!包含特征可视化,数据Excel导入,直接运行!

BWO 白鲸优化算法,于2022年发表在SCI、中科院1区期刊《Knowledge-Based Systems》上。我们利用该高创新算法对我们的CNN-BiGRU-Attention时序和空间特征结合-融合注意力机制的回归预测程序代码中的超参数进行优化。

weixin_48747334的博客 3262

Linux下" multiple definition of..."以及“第一次在此定义”的解决

在vs里使用了<sstream>库里的to_string函数,在改变编译环境到了gcc编译器下时,出现了一贯的重复声明问题,这种情况往往是未能考虑到不同编译环境下的函数存在性,往往需要我们通过条件编译进行解决。譬如下面的int->string函数(注意包含头文件“#include<sstream>"string to_string(int a) { ostri...

Osiris_sir的博客 3211

【思博伦】史上最详细Spirent TestCenter测试仪2544套件使用图文教程精讲!图解超赞超详细!!!

Avalanche测试仪使用指南 摘要:本文介绍了Avalanche测试仪的基本配置和使用方法。该测试仪采用Linux内核系统,通过端口模拟客户端与服务器端,支持HTTP、DNS、FTP等多种协议。文章详细讲解了管理IP配置、端口占用、项目创建、客户端/服务器端的参数设置(包括负载模拟、行为配置、网段设置等),以及测试执行和结果查看的全流程。特别针对HTTP测试,说明了测试前的组网准备和注意事项,包括IP地址规划、License申请等。同时提供了2544套件的时延和吞吐量测试方法,包括参数配置技巧和结果分析

风云说通信 2268

【已解决】编译Linux内核报错multiple definition of yylloc

在学习正点原子的驱动开发指南过程中,在编译Linux内核时出现以下报错,内核文件为:linux-imx-rel_imx_4.1.15_2.1.0_ga。./mx6ull_alientek_emmc.sh文件内容如下。

MOS_JBET的博客 861

《QGIS快速入门与应用基础》108:CGCS2000对应的投影坐标系

本文详细解析了CGCS2000地理坐标系对应的各类投影坐标系,包括高斯-克吕格3°带/6°带、UTM、地方独立投影和Web墨卡托投影。文章系统阐述了各投影类型的分带规则、参数设置、精度特性及适用场景,并提供了EPSG编码对照表和QGIS操作指南。通过"基准+投影"的绑定机制,这些投影坐标系实现了平面坐标与经纬度的精准转换,满足从大比例尺工程测量到Web地图服务等不同应用需求。内容涵盖投影原理、坐标格式、变形控制等关键技术要点,为GIS开发者和测绘人员提供了实用的参考信息。

LuckyHanMo的博客 540

基于Python的智能动漫更新监控爬虫系统:从原理到实战

本文详细介绍了如何使用Python构建一个智能化的动漫更新监控系统,涵盖从基础爬虫到高级自动化监控的全套解决方案。文章将深入探讨最新的网络爬虫技术,包括异步请求、反反爬策略、智能解析算法等,并提供完整的代码实现和性能优化方案。通过本系统,用户可以实时获取多个动漫平台的更新信息,并通过多种渠道接收通知。关键词:Python爬虫、动漫监控、自动化通知、异步爬虫、反反爬策略。

2201_76125261的博客 902

解决方法:Ubuntu 22.04编译Linux内核提示错误multiple definition of `yylloc‘

在使用Ubuntu22.04系统时,编译Linux内核出现错误scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple definition of `yylloc’;

Leung的博客 4527

流媒体之LL-HLS 低延时HLS协议

LL-HLS协议通过扩展了HLS协议,为实时直播场景提供了更丰富的功能,如延迟控制、播放列表增量更新、阻止播放列表重新加载等。同时客户端可以更灵活地控制播放列表的加载和播放,以适应各种场景和需求。LL-HLS在直播中的延时可以控制在3s内, 但是即使这样, 还是不如RTMP, RTSP等协议的实时性。

技术控的笔记 3365

Linux Mint 21编译Android kernel,遇到 multiple definition of `yylloc‘ 的错误解决

/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x50): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here

hisenyiu2015的博客 1565

《PLECS仿真与实战:从建模到高端应用》-专栏文件目录

《PLECS仿真与实战:从建模到高端应用》是一本系统介绍PLECS电力电子仿真软件的实用指南。全书共10章,首先介绍软件安装与基础操作,包括RC电路仿真等入门内容;随后深入讲解各类电力电子电路的建模与仿真,涵盖整流、交交变换、直流变换、逆变等电路;最后探讨PWM控制建模和直流调速系统等高端应用。书中配有丰富的示例程序和波形分析方法,附录还包含电力电子器件、代码生成等实用资料。该书适合电力电子领域工程师和学生系统学习电路仿真技术。

542

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

编译linux内核时multiple definition of `yylloc‘错误的解决方案

在编译IMX6ULL时,使用了新版gcc导致编译报错。 错误为multiple definition of `yylloc' 在网络上找了很久也没有找到有效的解决方案(换gcc-9(这种确实可行,但不是我想要的),注释掉yylloc(重复定义错误没了但其他错误出现了)等等) 稍微研究了一下(边改代码边编译,查报错信息),得到了不用换编译器的解决方案,方案如下。 使用vscode或其他编辑器打开内核文件夹下的scripts/dtc,在文件中搜索yylloc,将dtc-lexer.lex.c_shi

u011781073的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

解决Linux下交叉编译U-Boot源码时报‘multiple definition of `yylloc‘‘的错误

一、编译环境 环境 值 操作系统 Fedora release 35 (Thirty Five) 交叉编译环境 gcc-linaro-6.1.1-2016.08-x86_64_aarch64-linux-gnu Linux 内核版本 5.14.16 U-Boot版本 1.7.4(板子厂商特供版) 二、问题描述 我们可以从报错信息看到,dtc-parser.tab.o和scripts/dtc/dtc-lexer.lex.o这两个中间文件中对yylloc多重定义了,导致在链接时,

欢迎来到我的博客站点 9385

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Linux内核编译错误:multiple definition of yylloc‘(已解决)

编译文件产生了重定义的问题,系统报错如下。),因此根本处理方法是修改。,如上图所示,保存,重新编译即可。,没用的,编译过程会删除掉,从。可以看到,重定义变量的文件是。

weixin_52056217的博客 368

【ubuntu20.04 编译uboot、linux内核时报multiple definition of `yylloc‘ 错误】

gcc版本过高导致的uboot编译失败

qq_39809339的博客 651

qt之库编译错误:qmutex_linux.cpp:multiple definition of 'QBasicMutex::lockInternal(int)'

错误描述 .obj/qmutex_linux.o: In function QBasicMutex::lockInternal()': qmutex_linux.cpp:(.text+0x0): multiple definition ofQBasicMutex::lockInternal()' .obj/qmutex.o:qmutex.cpp:(.text+0x150): first defin...

hezhanran的博客 2111

新版本gcc(gcc10.x)编译Linux内核,错误:multiple definition of `yylloc‘

由于GCC的更新编译之前的Linux内核会出现各种各样的问题,本文就multiple definition of yylloc问题解决给出解决方案 本文环境如下: OS: Ubuntu 21.04LTS GCC: gcc 10.3.0 LD: ld 2.36.1 Linux Kernel: Linux 4.15 1、查看gcc和ld版本 imaginemiracle@:$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/us

Imagine Miracle的博客 8032

multiple definition of...

<br />在linux下编译工程的一个模块文件是出现了n多multiple definition of...(函数名)的错误<br />解决方法如下:<br />1、为每个文件添加条件编译<br />#ifndef _文件名_H_<br />#define _文件名_H_<br />#ifdef __cplusplus<br />extern "C" {<br />#endif /* __cplusplus */<br /> <br />/**************自己的代码部分************

hyiwei16的专栏 1223

编译Linux内核报错:usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x50): multiple definition of `yylloc‘;

gcc版本过高(高于10.0),可通过。

weixin_44498318的博客 1531

ubuntu22.04 编译Linux内核出现 multiple definition of `yylloc

可以手动修改内核源码中的 scripts/dtc 文件: 1. 找到 scripts/dtc/dtc-lexer.l 文件,删除或注释掉以下行: YYLTYPE yylloc;2. 同样,在 scripts/dtc/dtc-lexer.lex.c_shipped 文件中,找到并删除或注释掉: YYLTYPE yylloc;

weixin_62196546的博客 132
上一篇: libstdc++.so.6: cannot open shared object file: No such file or directory
下一篇: c++调用静态函数的方法
ComputerInBook
博客等级 码龄19年 1168粉丝 464原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值