繁体   English   中英

为什么会有这个沙丘构建错误? '找不到-lz'

[英]Why is there this dune build error? 'cannot find -lz'

我正在尝试使用此沙丘文件构建一个项目:

src/lib/precomputed_values/gen_values/dune

(executable
 (name gen_values)
 (flags -w -32)
 (libraries
   ;; opam libraries
   stdio
   async_kernel
   compiler-libs
   core_kernel
   ppxlib
   ppxlib.ast
   ppxlib.astlib
   async
   core
   ocaml-migrate-parsetree
   base
   ocaml-compiler-libs.common
   async_unix
   base.caml
   sexplib0
   ;; local libraries
   coda_runtime_config
   consensus
   transaction_snark
   mina_state
   snark_params
   coda_genesis_proof
   blockchain_snark
   mina_base
   global_signer_private_key
   ppx_util
   snarky.backendless
   genesis_constants
   pickles
   test_genesis_ledger
   coda_genesis_ledger
   staged_ledger_diff
 )
 (preprocessor_deps ../../../config.mlh)
 (preprocess
  (pps ppx_version ppx_optcomp ppx_let ppxlib.metaquot ppx_here))
 (instrumentation (backend bisect_ppx))
 (modes native))

但我得到了error

File "src/lib/precomputed_values/gen_values/dune", line 2, characters 7-17:
2 |  (name gen_values)
           ^^^^^^^^^^
/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
File "caml_startup", line 1:
Error: Error during linking (exit code 1)
Makefile:84: recipe for target 'build' failed
make: *** [build] Error 1

谁能指出我正确的方向? 谢谢:)

您的系统上有可用的 libz 吗? 看起来 ld linker 在其搜索路径中找不到它。 libz.a 是一个 C 库,它实现了 C function 用于压缩/解压缩数据。 这些库独立于 Ocaml 随您的操作系统发行版一起提供。

Ocaml 工具提供了使用ld (标准链接器)使用 C 库(通过存根)的方法,它将您的 ocaml 存根链接到 libz.a 的函数。 但是,如果缺少所需的库,则会收到引用的错误。

-lz是说 ld 将您的应用程序与通常位于/usr/lib中的libz.a (或libz.so )库链接 - 如果libz.alibz.so )不存在,则 linker 将失败导致发出以下消息:

/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM