在linux计算机中编译python文件时,将显示以下警告,但在Solaris计算机中编译的相同文件将不会显示警告
/opt/swe/tools/ext/gnu/python-2.3.5_p1/i686-linux2.4/lib/python2.3/config/libpython2.3.a(posixmodule.o)(.text+0x3e9a): In function `posix_tmpnam':
./Modules/posixmodule.c:6138: warning: the use of `tmpnam_r' is dangerous, better use `mkstemp'
/opt/swe/tools/ext/gnu/python-2.3.5_p1/i686-linux2.4/lib/python2.3/config/libpython2.3.a(posixmodule.o)(.text+0x3de9): In function `posix_tempnam':
./Modules/posixmodule.c:6093: warning: the use of `tempnam' is dangerous, better use `mkstemp'无法解析上述警告代码段
有谁能帮忙吗?
发布于 2010-01-07 21:16:41
您使用的是较旧版本的python。
从那时起,tmpnam函数显然是不安全的,linux附带的库/头文件已经更新,给您一个警告。但它应该进行编译,因为向后兼容性非常重要。
Python2.3的开发时间还不清楚mktemp是不是一个安全问题,mkstemp可能不可用。
Solaris可能没有这个问题,因为tmpnam在该平台上不是不安全的,或者您的solaris版本稍早一些。
如果你想摆脱警告,你有不同的可能性:
如果可能,我会选择升级,否则我会接受它。
发布于 2010-01-07 20:50:31
也许更新你的python?例如,到2.6.4
发布于 2011-04-11 19:38:45
对于libpython2.6.a,您会收到同样的警告,因此升级的建议是没有帮助的。只有升级到Python 3才能消除警告(参见Python bug 1318),但对于某些人来说,这不是一种选择。
避免该警告的一种方法是链接到提供tmpnam_r和tempnam定义的库,以便在libpython2.6.a中使用它解析为您的定义,而不是glibc中真正的定义。glicb中的定义会触发警告,因为libc.so中有.gnu.warning.tmpnam_r和.gnu.warning.tempnam部分
如果您实际上不使用os.tempnam()和os.tmpnam(),则可以忽略这些警告。
https://stackoverflow.com/questions/2020317
复制相似问题