[英]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.a
( libz.so
)不存在,则 linker 将失败导致发出以下消息:
/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.