首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的编译警告

问Python中的编译警告
EN

Stack Overflow用户
提问于 2010-01-07 20:45:19
回答 3查看 1.8K关注 0票数 2

在linux计算机中编译python文件时,将显示以下警告,但在Solaris计算机中编译的相同文件将不会显示警告

代码语言:javascript
复制
/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'

无法解析上述警告代码段

有谁能帮忙吗?

EN

回答 3

Stack Overflow用户

发布于 2010-01-07 21:16:41

您使用的是较旧版本的python。

从那时起,tmpnam函数显然是不安全的,linux附带的库/头文件已经更新,给您一个警告。但它应该进行编译,因为向后兼容性非常重要。

Python2.3的开发时间还不清楚mktemp是不是一个安全问题,mkstemp可能不可用。

Solaris可能没有这个问题,因为tmpnam在该平台上不是不安全的,或者您的solaris版本稍早一些。

如果你想摆脱警告,你有不同的可能性:

  • 升级到更新版本的python。建议,但如果您的生产系统未升级,则可能无法执行此操作。
  • 使用一个还没有修复这个问题的旧版本的linux (绝对不是这样的警告,一个警告,并且知道如果你在python中使用临时文件逻辑,你正在创建潜在的安全problems...
  • set较低的gcc警告级别,这样它就不会警告你:)

如果可能,我会选择升级,否则我会接受它。

票数 4
EN

Stack Overflow用户

发布于 2010-01-07 20:50:31

也许更新你的python?例如,到2.6.4

票数 1
EN

Stack Overflow用户

发布于 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(),则可以忽略这些警告。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2020317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档