如何在C中使用setenv避免此错误?

前端之家收集整理的这篇文章主要介绍了如何在C中使用setenv避免此错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
首先披露:我不是一个C程序员.我正在尝试编译一组具有很多谱系的C和Fortran代码,使用Makefile生成工程计算的可执行文件.我在sgi Irix(6.5.30)上使用 gcc 4.7.1.在编写主程序时,首先我收到关于’隐式声明函数’setenv’的警告.随后,在生成所有目标“o”文件后,编译以错误结束:

ld32: Error 33: Unresolved data symbol “setenv”

注释掉定义’setenv’的单行允许编译成功并生成可执行文件.然而,与setenv的关系对该计划至关重要.

这导致我编写测试代码并确认同样的问题:

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
int main()
{
   setenv("FILE","/usr/bin/example.c",50);
   printf("File = %s\n",getenv("FILE"));
   return 0;
}

根据我在堆栈交换和其他网站上搜索时发现的所有建议,我尝试包括不同的标题

#define _POSIX_C_SOURCE

#define _GNU_SOURCE

在任何#define语句之前.我也尝试使用-std = c99以及-D_XOPEN_SOURCE和-D_GNU_SOURCE进行编译,但没有运气.

我也尝试使用Irix的本机C编译器(cc和c99)编译测试程序,我得到了同样的错误

Unresolved text symbol ‘setenv’

有人可以帮助我在我的系统和/或环境变量中寻找其他什么来解决这个错误吗?

解决方法

它确实看起来像IRIX libc不支持setenv()命令.你必须用putenv()重写它,如下所示:
putenv("FILE=/usr/bin/example.c");

另请参阅IRIX putenv() manpage.寻找setenv()没有显示任何命中,所以我假设,此功能缺失(注意:IRIX 6.5.30来自2006)

原文链接:/c/119627.html

猜你在找的C&C++相关文章