当前位置:  开发笔记 > 运维 > 正文

sscanf + c99无法在某些平台上运行?

如何解决《sscanf+c99无法在某些平台上运行?》经验,为你挑选了1个好方法。

当我编译一个简单的Hello World!在我的本地Debian lenny x64上使用sscanf函数的程序,它的工作原理.但是当我将相同的程序上传到运行CentOS x86的服务器时,它将无法正常工作.如果我不使用sscanf,那么该程序可以在两台计算机上运行.

gcc -std = c99 -O2 -pipe -m32

如果我用sscanf但没有-std = c99编译它,那么它适用于两台计算机.

gcc -O2 -pipe -m32

在CentOS x86上使用sscanf和c99有什么问题?我认为使用-m32标志进行编译会对所有Linux都有效吗?(我对CentOS服务器的访问权限有限,因此我无法访问错误消息.)



1> R....:

可能CentOS盒子使用旧版本的glibc.由于他们的scanf实现的非标准GNU扩展最终导致glibc与c99冲突,他们添加了一个令人讨厌的黑客重定向*scanf__isoc99_*scanf何时-std=c99使用; 如果您的glibc副本缺少__isoc99_sscanf符号,则程序将无法运行.

静态链接,或链接到不同的libc没有丑陋的向后兼容性黑客,将解决问题.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有