【问题标题】:What must be recompiled to run a x32 ABI application?必须重新编译哪些内容才能运行 x32 ABI 应用程序?
【发布时间】:2013-04-21 14:04:26
【问题描述】:

我可以使用新的 x32 ABI 编译应用程序,然后在普通内核中运行它吗?运行时 C 库呢?与预编译的 x86/x86_64 库有任何形式的互操作性吗?

【问题讨论】:

    标签: linux 32bit-64bit abi linux-x32-abi


    【解决方案1】:

    不。 x32 需要自己的一组库,就像 x86 和 x86-64 一样。就像您不能在仅提供 x86-64 库的系统上运行 x86 二进制文件一样,x32 二进制文件也无法在仅提供 x86 和/或 x86-64 库的系统上运行。与 x86 和 x86-64 一样,x32 是自己的架构。

    当然,还必须在内核中启用支持。在未启用 x32 支持的情况下构建的内核将无法运行 x32 二进制文件。

    【讨论】:

    • 但是你可以让你的 x86-64、x86 和 x32 库并排存在,对吧?就像 64/32 位用户空间会有目录 /lib32、/lib64、/usr/lib32、/usr/lib64 等?谢谢!
    • @DanielSantos 是的。这是一个和其他两个一样的架构。我敢打赌,在多库系统上,库将位于 /usr/libx32 中,除非系统的本机架构是实际的 x32,在这种情况下它们可能位于 /usr/lib 中。
    • 如果系统有 x86-64 和 x32 库,它如何决定使用哪个库?是否必须重新编译所有应用程序才能使用 x32 库来节省 RAM?
    • @jarno 是的。这是在编译和链接时确定的。对于 GCC,选择它的选项是“-m”。 “-m32”使用 x86,“-m64”使用 x86-64,“-mx32”使用 x32。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2015-06-29
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    相关资源
    最近更新 更多