【问题标题】:Compiling with DMD on 64bit Linux or Linking with 32bit object files在 64 位 Linux 上使用 DMD 编译或使用 32 位目标文件链接
【发布时间】:2009-05-13 06:12:17
【问题描述】:

在 64 位机器上使用 DMD 编译程序的最佳方法是什么?它不需要编译为 64 位代码。我知道 GDC,但也想与 D2 合作。还有 chroot,但我希望有一个更简单的方法。

实际问题不在于编译,而在于链接。 DMD 调用 GCC 以执行与系统库的链接。我可以让 DMD 拥有针对 32 位库的 GCC 链接吗?或者我该如何手动完成?

我已经安装了 ia32 库,这就是我可以运行 DMD 的原因。

【问题讨论】:

    标签: 64-bit linker 32-bit d dmd


    【解决方案1】:

    通过传递'-m32' 标志让 GCC 执行 32 位链接。

    似乎DMD 没有调用gcc 来执行链接,而是直接调用ld。等效的ld 开关是'-melf_i386',显然使DMD 将该选项传递给链接器的方法是使用'-L-melf_i386' 标志。

    请注意,许多系统将运行时库和开发库分开。几乎总是默认安装 32 位运行时包,但可能不会安装 32 位开发包。

    您需要开发 32 位软件包来构建 32 位程序。 32 位 DMD 可以运行这一事实本身并不能证明您拥有构建 32 位程序所需的所有 32 位库。

    【讨论】:

    • 谢谢。为了完成答案,开发所需的包是 gcc-multilib。我使用的开关也是-melf_i386,并让dmd转发到gcc -L-melf_i386。你能更新你的答案吗?
    猜你喜欢
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 2012-01-02
    • 1970-01-01
    • 2019-05-01
    • 2012-04-21
    • 2018-08-04
    相关资源
    最近更新 更多