【问题标题】:Setting up a working D2.x toolchain (with gtkd) on Ubuntu 10.04在 Ubuntu 10.04 上设置工作 D2.x 工具链(使用 gtkd)
【发布时间】:2010-10-09 20:07:23
【问题描述】:

我已经和 D 一起玩了几天,并且对此非常兴奋,直到,也就是说,我试图让 gtkd 工作。我现在浪费了 3 天中最好的部分来尝试设置工作,并且开始变得(阅读;很久以前)有点士气低落。在我放弃之前,我想知道是否有人可以提供帮助。我可以在网上找到的很多信息都已经过时了,所以我不确定我是否认为这是可能的。

剩下的只是我到目前为止所尝试的,如果你有一个快速的解决方案,你可能不需要阅读它,所以请随意跳到... [跳到这里]

所以,首先我需要知道,tango 是否真的可以与 D2.0 一起使用,我相信它最初不是,但现在 D2.x 是这样的,你可以同时使用 tango 和 phobos。如果这不是真的,那么我想我已经在第一个障碍中跌倒了,这不是首发。

到目前为止我已经采取的步骤。

  1. 我从 ubuntu 存储库安装了 gdc
  2. 我从 repos 安装了 libtango-headers(请注意,只有标头,没有可用的库,所以帮助不大)
  3. 我手动安装了 dsss

这个设置可以编译 D,但是当我开始安装 gtkd(使用 dsss)时,它编译了,但是在尝试使用它编译任何东西时我得到了各种错误(与 tango 有关)。好吧,正如我提到的,我没有库,所以这不应该是意外的。我尝试手动安装探戈库,但仍然遇到很多错误,最后求助于dsss net install tango,它警告我无法回到火卫一(这让我很困惑,正如我所提到的,我认为两者可以一起使用)无论如何,我继续进行并且完全搞砸了我的设置。我现在无法编译任何 D。

抱歉,我无法更明确地说明我在上一节中遇到了什么错误,老实说,我不记得了。

无论如何,我删除了我安装的所有内容。并重新开始。

  1. 我从 repos 安装了 gdc
  2. 我手动安装了 dsss

我现在读到最新的 tango 不适用于 gdc(不确定这是不是真的)所以我

  1. 获得 dmd 的 deb 并安装它。
  2. 手动安装了最新的 tango(库和头文件)。
  3. 用 dsss 安装了 gtkd

现在我无法让 dsss 识别 dmd,所以只能使用 gdc。然而,这并没有找到探戈。如果我直接使用 dmd,它会找到 tango 和 gtkd,但我会收到有关不推荐使用 volatile 语句的错误。在 D2.x 中显然是正确的,这让我回到“甚至支持探戈”。

天哪,我很困惑!

[跳转到这里]

如果有人能给我一步一步的说明如何设置一个工作设置,我将永远感激不尽!

谢谢,T。

更新: “我们到了!”

所以我从http://www.digitalmars.com/d/download.html 下载了 dmd.2.049.zip 并解压缩到我的主目录并做了一个export PATH = $PATH:~/dmd2/linux/bin(感谢 dsimcha)。

忘记了dsss。根据http://www.dsource.org/projects/gtkd/wiki/UsingSubversion 的说明获得 gtkd 的 svn 版本。编辑GNUmakefile 将前缀更改为/home/me/dmd2/linux 并做了make install

编辑了~/dmd2/linux/bin/dmd.conf,因此包含路径../include(gtkD 库放在../lib,所以我不需要编辑库路径)。

现在终于要使用 gtkD 进行编译,我需要链接 libgtkd 和 libdl,这是由 dmd mydprog.d -L-lgtkd -L-ldl(感谢 jpf)完成的。

【问题讨论】:

    标签: d gtkd


    【解决方案1】:
    1. Tango 不适用于 D2。很久以前有一些努力移植它,但这种碰壁,目前还不清楚这是否真的会完成。 D2 的 OTOH Phobos比 D1 的 Phobos 好很多,所以缺少 Tango 并没有听起来那么糟糕。

    2. GDC 支持旧版本的 D2。 gtkD 绝对不可能用它编译。您应该使用参考 DMD 编译器。

    3. 通常,在 Linux 上设置 DMD 的正确方法是简单地将 dmd.2.0xx.zip 解压缩到您的主目录并执行 export PATH = $PATH:~/dmd2/linux/bin 以确保 DMD 可执行文件在您的路径中。然后一切正常(使用 DMD2 和 Phobos)。

    【讨论】:

    • 谢谢,这清楚了很多。我现在感觉好多了 :)。知道如何让 gtkd 工作。我有dsss 现在只用Phobos 编译它,dmd 按照你的建议设置。我已经尝试将它 (gtkd) 安装到 prefix=~/dmd2/linux/ 并编辑 dmd.conf 以更改包含目录但没有运气。
    • 运气好,我在帖子中进行了编辑以解释当前情况;现在我收到链接器错误。
    【解决方案2】:

    如果您希望 dmd 将参数传递给链接器,您必须在它们前面加上 -L。 我认为对于 gtkd,您需要链接到 gtkd 库和 libdl。

    -L-lgtkd -L-ldl
    

    【讨论】:

    • 太棒了,谢谢。我见过 -L 标志并尝试过-Lgtkd-Llgtkd,但从未想过-L-l...。现在一切正常。
    • 太棒了!我遇到了同样的问题,并且正在尝试我能想到的所有 -Lgtkd 变体。从来没有想过尝试 -L-l... (而且文档很难找到!)
    猜你喜欢
    • 2011-04-09
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2012-12-19
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多