Chinaunix首页 | 论坛 | 博客
  • 博客访问: 249124
  • 博文数量: 11
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 129
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-09 23:45
个人简介

新手上路

文章分类

全部博文(11)

文章存档

2014年(10)

2013年(1)

我的朋友

分类: C/C++

2014-03-11 15:03:59

编译版本时遇到ld连接错误  warning: multiple common of “CGM_MUTEX_SEM”, 把CGM_MUTEX_SEM的声明和定义放到同一个c文件中解决。其他c文件通过extern引用。
附 ld warning信息:

警告信息.

这里给出三种类型的全局符号的解释(用C语言):

`int i = 1;'
一个定义, 它会存在于输出文件中的已初始化数据节.

`extern int i;'
一个未定义符号,它不占用空间. 必须在另外某一处对它有一个定义,或一个普通符号

`int i;'
一个普通符号.如果对于一个变量只有(一个或多个)普通符号, 它进入输出文件的未初始化数据域. 连
接器会把同一变量的多个普通符号合并成一个单一的符号. 如果他们有不同的大小, 它采用最大的一
个. 如果是对同一变量的定义,连接器把一个普通符号转化为一个声明.

'--warn-common'选项可以产生五种类型的警告. 每种警告由两行组成: 第一行描述遇到的符号, 第二
行描述遇到的前一个具有相同名字的符号. 一个或两个都可能成为普通符号.

1. 把一个普通符号转化为一个引用, 因为这个符号已经有一个定义了.
FILE(SECTION): warning: common of `SYMBOL'
overridden by definition
FILE(SECTION): warning: defined here

2. 把一个普通符号转化为一个引用,因为遇到了第二个关于符号的定义. 这跟前一种情况相同,除了符
号遇到的顺序相反.
FILE(SECTION): warning: definition of `SYMBOL'
overriding common
FILE(SECTION): warning: common is here

3. 把一个普通符号跟前一个相同大小的普通符号合并.
FILE(SECTION): warning: multiple common
of `SYMBOL'
FILE(SECTION): warning: previous common is here

4. 把一个普通符号跟前一个更大的普通符号合并.
FILE(SECTION): warning: common of `SYMBOL'
overridden by larger common
FILE(SECTION): warning: larger common is here

5. 把一个普通符号跟前一个更小的普通符号合并. 这跟前一种情况相同, 除了遇到的符号的顺序不同.
FILE(SECTION): warning: common of `SYMBOL'
overriding smaller common
FILE(SECTION): warning: smaller common is here 
阅读(2890) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~