gpt4 book ai didi

c - sscanf + c99 在某些平台上不工作?

转载 作者:太空宇宙 更新时间:2023-11-04 00:56:10 25 4
gpt4 key购买 nike

当我编译一个简单的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 服务器的访问权限有限,因此我无法访问错误消息。)

最佳答案

可能 CentOS 机器使用的是旧版本的 glibc。由于对其 scanf 实现的非标准 GNU 扩展最终导致 glibc 与 c99 发生冲突,因此当 -std =c99 正在使用中;如果您的 glibc 副本缺少 __isoc99_sscanf 符号,程序将无法运行。

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

关于c - sscanf + c99 在某些平台上不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2595483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com