aix6.1 gcc编译时的一个警告

不辣 2012-09-20 02:29:58
"ld: 0711-224 WARNING: Duplicate symbol"

...全文
149 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymtom 2012-09-28
  • 打赏
  • 举报
回复
按道理 .h 里的变量是要加 extern 的。
但是如果没有初始化的话 去掉 extern 也是可以的。

具体的细节可以看看这个帖子的6楼
http://topic.csdn.net/u/20090730/18/c82db8af-6488-411a-b734-56bddd61a467.html
不辣 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

6.1 的 ld 确实会由这种警告,建议查一下代码。
多半是在.h文件里定义变量引起的
C/C++ code

$ cat foo.h foo.c main.c
/**
* @file foo.h
* @brief
*/
int foo = 1;


/**
* @file foo.c
* @brief
*/
#inclu……
[/Quote]

道理是这样子的,问题是解决方法必须在头文件加"extern "? 这是不是比较常规的解决方法?不是太符合平时的习惯以及头文件的作用
mymtom 2012-09-25
  • 打赏
  • 举报
回复
6.1 的 ld 确实会由这种警告,建议查一下代码。
多半是在.h文件里定义变量引起的
[code=C/C++]
$ cat foo.h foo.c main.c
/**
* @file foo.h
* @brief
*/
int foo = 1;


/**
* @file foo.c
* @brief
*/
#include "foo.h"


/**
* @file main.c
* @brief
*/
#include <stdio.h>

#include "foo.h"

int main(int argc, char *argv[])
{
printf("%d\n", foo);

return 0;
}
$ xlc -o foo foo.c main.c
foo.c:
main.c:
ld: 0711-224 WARNING: Duplicate symbol: foo
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
$ cat foo.h foo.c main.c
/**
* @file foo.h
* @brief
*/
extern int foo;


/**
* @file foo.c
* @brief
*/
#include "foo.h"

int foo = 1;


/**
* @file main.c
* @brief
*/
#include <stdio.h>

#include "foo.h"

int main(int argc, char *argv[])
{
printf("%d\n", foo);

return 0;
}
$ xlc -o foo foo.c main.c
foo.c:
main.c:
$
[/Code]
不辣 2012-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

警告没关系的
[/Quote]

这东西多了就比较咋眼
ll36031715 2012-09-20
  • 打赏
  • 举报
回复
警告没关系的

1,194

社区成员

发帖
与我相关
我的任务
社区描述
该论坛主要探讨IBM AIX平台的安装、部署、应用开发等话题,并为网友们提供自由交流的平台。
社区管理员
  • IBM AIX社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧