2

我一直想用 Opa 弄脏我的手,但真的感觉缺少 REPL,这是我适应新语言的首选武器。瞧,Opa 博客提到了一个名为的工具opatop,看起来就是这样,但它似乎不包含在标准的 Mac 或 Ubuntu 发行版中。

我跋涉到 GitHub,获取源代码并开始构建,但我遇到了这里提到的相同错误:

+ /opt/local/bin/ocamlopt.opt dynlink.cmxa unix.cmxa str.cmxa nums.cmxa -g threads.cmxa -thread -I +zip zip.cmxa -I +ocamlgraph graph.cmxa -I /opt/local/lib/ocaml/ulex ulexing.cmxa buildinfos.cmxa libbase.cmxa compilerlib.cmxa libtrx.cmxa opacapi.cmxa passlib.cmxa libqmlcompil.cmxa jslang.cmxa ocamllang.cmxa libbsl.cmxa libbsl/bslregister.cmx opalang.cmxa -o libbsl/bslregister.native
File "_none_", line 1, characters 0-1:
Error: Cannot find file dynlink.cmxa
Command exited with code 2.

我对 OCaml 开发几乎一无所知,但看起来相关库目录中具有相同扩展名的其他文件是“OCaml 本机库文件”。鉴于此,这只是我最终得到的 OCaml 发行版中未包含的库吗?上面链接中引用的Mantis 错误使它看起来好像对工作中的构建环境存在相互冲突的假设。

无论如何,任何人都可以提供任何建议吗?

谢谢!

4

2 回答 2

2

OCaml 尚未使用 Lion 的本机 dynlink 构建,因此默认安装下不存在 dynlink.cmxa。

以下补丁将允许您构建它。在 OCaml src 目录中,patch -p1 < PATH/TO/PATCH根据需要重新安装 OCaml。

这适用于 OCaml 3.12.1

--- a/configure  2011-07-04 14:15:01.000000000 -0700
+++ b/configure  2011-08-26 10:18:42.000000000 -0700
@@ -619,9 +619,9 @@
   case "$host" in
     *-*-cygwin*)                  natdynlink=true;;
     i[3456]86-*-linux*)           natdynlink=true;;
     x86_64-*-linux*)              natdynlink=true;;
-    i[3456]86-*-darwin10.*)
+    i[3456]86-*-darwin1[01].*)
       if test $arch64 == true; then
         natdynlink=true
       fi;;
     i[3456]86-*-darwin[89]*)      natdynlink=true;;
于 2011-08-26T18:11:43.987 回答
1

我调查了 OS X Lion 下的 Opa 构建,并在 opalang 上推送了 2 个补丁,等待批准以解决主要问题。

因此,当补丁可用时,这是我(我记得)使 Opa 在 Lion 下工作的步骤:

首先,安装必要的工具:

  • 安装 OS X Lion
  • 安装 Xcode 4
  • 安装 MacPorts
  • 安装 wget (macports)
  • 安装 coreutils (macports)
  • 安装 md5sha1sum (macports)
  • (我认为仅此而已……)

然后从源代码编译 Opa:

  • git 克隆https://github.com/MLstate/opalang.git
  • cd opalang
  • 依赖项/installation_helper.sh --prefix ~/Opa
  • 在 ~/.profile 中更改 PATH : export PATH=~/Opa/bin:$PATH
  • 重新获取您的 .bashrc 资源: source ~/.profile
  • ./configure -prefix ~/Opa
  • 全部安装
  • 你的新 opa 编译器应该在 ~/Opa/bin :)
于 2011-08-09T16:16:33.453 回答