免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3313 | 回复: 12
打印 上一主题 下一主题

请问HP-UX CC 调用lib中的getenv出错,怎么回事 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-01-13 14:12 |只看该作者 |倒序浏览
HP-UX,C语言用CC编译,直接在.c中调用getenv能取到相应的环境变量,但是调用一个.a的lib中的一个函数,该函数中有getenv却出错,内存访问出错
这是什么原因?跟lib的编译或是连接参数有关吗?

PS:在REDHAT 9中用GCC正常.

论坛徽章:
0
2 [报告]
发表于 2005-01-13 15:04 |只看该作者

请问HP-UX CC 调用lib中的getenv出错,怎么回事

错误信息都没有,问神仙呐?

论坛徽章:
0
3 [报告]
发表于 2005-01-13 15:10 |只看该作者

请问HP-UX CC 调用lib中的getenv出错,怎么回事

不好意思,不过我说了是内存访问出错啊.具体的情况是getenv返回一个负数,比如-203,转成char *去取那个串时自然就出错了.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-01-13 15:19 |只看该作者

请问HP-UX CC 调用lib中的getenv出错,怎么回事

getenv返回的就是char *型,一般而言指针是一个unsigned int,怎么可能返回一个“负数”?

论坛徽章:
0
5 [报告]
发表于 2005-01-13 15:38 |只看该作者

请问HP-UX CC 调用lib中的getenv出错,怎么回事

在HP-UX上man一下getenv,看看include全了没有。

论坛徽章:
0
6 [报告]
发表于 2005-01-13 15:39 |只看该作者

请问HP-UX CC 调用lib中的getenv出错,怎么回事

我用gdb跟进去,s进函数,p getenv("....",是个负数,然后p (char *)getenv("..."就说不对了.

论坛徽章:
0
7 [报告]
发表于 2005-01-13 15:53 |只看该作者

请问HP-UX CC 调用lib中的getenv出错,怎么回事

HP-UX是64位的机子,为了使程序也是64位编译我用了cc +DD64 ...这样的编译参数,我写过简单的程序证实过加这个+DD64后,sizeof(int *)=8,不加是等于4
而现在我也发现了,我不用这个参数,我的getenv就是对的,加了就出现我说的情况了,但是不加又不行....要求用64位编译

论坛徽章:
0
8 [报告]
发表于 2005-01-13 16:00 |只看该作者

请问HP-UX CC 调用lib中的getenv出错,怎么回事

那就把那个libxxx.a也用64位再编译一次。

论坛徽章:
0
9 [报告]
发表于 2005-01-13 16:24 |只看该作者

请问HP-UX CC 调用lib中的getenv出错,怎么回事

我现在把问题简单化
a.c文件里
include "b.h"
main()
{
getenv()....

getinb()....
}

b.c文件里
getinb()
{
    getenv()....
}

cc -o a.out a.c b.c      结果OK
cc +DD64 -o a.out a.c b.c 结果a.c里的getenv正确,b.c中的getinb里的getenv就出错了

论坛徽章:
0
10 [报告]
发表于 2005-01-13 16:26 |只看该作者

请问HP-UX CC 调用lib中的getenv出错,怎么回事

你这简化得也太简单了吧?include呢?全了没有?
在HP-UX上man一下getenv,看看include全了没有。

看来FH说的应该是对的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP