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

今天,在编译quagga的过程中出现了multiple definition of的错误。该错误表示不同文件对同一变量进行了重复定义。因此,可以从以下几个方面来排查这个问题:

1. 是否定义了重复变量:

直观来讲,如果在已经引用的global.h中定义了变量v,那么在本文件之中,就不能再定义一个都是全局的变量。模块编译时虽然能够通过,但在链接过程中就会发现有多个变量,因此报错。解决办法就是修改不必要的重名。

 

2.链接出错:

就是在链接的时候才报错。

这说明模块内的用法是正确的,但由于未能唯一标示同一变量,导致多次声明。

解决方法(1):在global.h中声明,其他所有引用的地方用extern来声明,该变量引用自外部文件;

解决方法(2):在global.h中将变量修改成static变量,那么全局就只会保存一份。 

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/wangicter/archive/2012/10/23/4767268.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值