当前位置:  技术问答>linux和unix

报错“collect2: ld returned 1 exit status”

    来源: 互联网  发布时间:2016-06-08

    本文导语:  一直都是正常的,今天编译的时候就错,如下: ====================================================================== public.o(.bss+0x0): In function `get_date': /home/opt/src/public.c:282: multiple definition of `errno_r' /tmp/ccf9Volt.o(.bss+0x130):/home/opt/...

一直都是正常的,今天编译的时候就错,如下:
======================================================================
public.o(.bss+0x0): In function `get_date':
/home/opt/src/public.c:282: multiple definition of `errno_r'
/tmp/ccf9Volt.o(.bss+0x130):/home/opt/src/BatchMain.c:884: first defined here
collect2: ld returned 1 exit status
make: *** [BatchMain] Error 1
======================================================================
其中,get_date是public中的第一个函数。
报错说errno_r变量重复定义了。在BatchMain.c:884第一次定义,问题是我变量errno_r根本就没有定义过。
所以我怀疑可能是编译环境出问题了,请问如何查找?thx

|
看看你的头文件,,,
一般是你的头文件里面重复定义了
看样子可能不是重包含,,而确实是在两个地方定义的

|


问题的关键应该就是头文件中的变量 errno_r 定义。一般来说,头文件应该这样:

extern int errno_r;


然后只能在其中一个 c 文件中定义其变量:


int errno_r;

|
头文件里有#ifndef
#define
#endif
这些宏么?

|
.h 只是声明而不是定义
初始化必须要有内存分配给这个变量
你在.c下就可以完成定义

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • (来者有分)AIX 下的gtk编程错误 collect2: /opt/freeware/lib/libintl.a: not a COFF file


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3