gpt4 book ai didi

macos - 为什么在 OCaml 搜索路径上找不到 3rd 方库?

转载 作者:行者123 更新时间:2023-12-04 17:27:31 27 4
gpt4 key购买 nike

我的配置如下:

OCaml 由 Homebrew 根据其默认配方安装。它住在 /usr/local/Cellar/objective-caml/3.12.0/[bin,lib,share] ,其内容被符号链接(symbolic link)到 /usr/local/[bin,lib,share] .

第 3 方库 (LLVM) 将符号链接(symbolic link)安装到 /usr/local/lib/ocaml/* .至关重要的是,/usr/local/lib/ocaml它本身不是 Homebrew Cellar 的符号链接(symbolic link),而是包含指向 OCaml Cellar 路径下各个文件的链接的文件夹,因此这些第 3 方库文件位于 /usr/local/lib/ocaml/路径但不是原始路径

标准 OCaml 编译器/解释器/构建工具始终无法找到这些 3rd 方库,除非它们被明确指出(例如使用 ocamlbuild -cflags -I,/usr/local/lib/ocaml )。
ld.conf列表:

/usr/local/lib/ocaml/stublibs
/usr/local/lib/ocaml
/usr/local/lib/ocaml/site-lib/pcre

这似乎表明编译器搜索路径设置正确,但我不熟悉工具链的内部工作原理。
  • 这是一个已知问题吗?
  • 有没有办法打印标准工具实际使用的 OCaml 搜索路径?
  • 假设这是 Homebrew configure 的结果和安装过程(即假设问题是 OCaml,按照配置,假设它的实际库路径是 /usr/local/Cellar/objective-caml/3.12.0/lib/ocaml 而不是 /usr/local/lib/ocaml ),是否可以强制在 --prefix 之外显式添加其他搜索路径在配置期间?
  • 安装后是否可以扩展整个环境的搜索路径(通过编辑配置文件,而不是不得不求助于潜在的重新安装)?
  • 最佳答案

    确实正如 ygrek 指出的那样,答案是 ocamlfind . OCamlfind 维护了一个安装在您系统上的支持 findlib 的 OCaml 包的列表,并且很容易链接它们。采用

    ocamlfind list

    获取软件包列表,可以通过管道传送到 grep等等
    ocamlfind query mypackage

    获取包的安装路径(更多信息见 ocamlfind query --help)
    ocamlfind ocamlc -package mypackage .....

    要使用包作为依赖项来编译某些东西( -linkpkg 用于在最后的链接步骤中构建可执行文件,例如 -c -o foo.cmo 不需要它)。
    ocamlfind也可以通过 ocamlbuild使用.在 ocaml 3.12 之前,您添加了一些 myocamlbuild.ml文件( link ),但从 3.12 开始就非常简单:使用 package(foo)如果您想使用 ocamlfind 的包 foo,请在 ocamlbuild 标签中, 并添加选项 -use-ocamlfindocamlbuild的调用。

    ¹:ocamlfind 是 OCaml 包的通用语言。如果您的一些第三个库没有通过 ocamlfind 注册自己,您应该搜索它们,编写一个 META 文件(这很容易),然后将其发送给库维护者。

    关于macos - 为什么在 OCaml 搜索路径上找不到 3rd 方库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5985215/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com