哪个软件包为 x32 ABI 提供 asm/errno.h?

哪个软件包为 x32 ABI 提供 asm/errno.h?

我尝试在 64 位 Kubuntu 14.04 上编译 strace 4.19,编译失败并出现以下错误:

/usr/include/linux/errno.h:1:23: fatal error: asm/errno.h: No such file or directory

我能够重现测试 C 源代码编译过程中出现的问题:

#include <errno.h>

-m32它可以使用和GCC 选项顺利编译-m64,但是会失败并出现上述错误-mx32

$ gcc -c -x c -mx32 - <<< '#include <errno.h>'
In file included from /usr/include/bits/errno.h:24:0,
                 from /usr/include/errno.h:35,
                 from <stdin>:1:
/usr/include/linux/errno.h:1:23: fatal error: asm/errno.h: No such file or directory
compilation terminated.

我猜我缺少一些提供asm/errno.hx32 ABI 的软件包。这个软件包是什么?

另一个问题我查看了这个问题,但并没有解决:我尝试了被接受的答案所建议的方法,但它根本没有改变任何东西。此外,它甚至不适用于没有任何自动工具构建的纯 GCC。另一个答案只是一个肮脏的黑客行为,我不知道它会如何破坏 strace 构建。此外,另一个问题没有提到 x32,而这是这个问题的核心。

答案1

要解决此问题,必须启用 gcc 中对 x32 ABI 的支持。

gcc-multilib 包将通过 /usr/include/linux/asm 符号链接提供该功能。作为参考,在提供上述信息的 debian 错误中可以看到这一点。https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=871946

相关内容