【问题标题】:An error message of compiling, GMP, Ocaml编译、GMP、Ocaml的错误信息
【发布时间】:2011-09-19 10:20:47
【问题描述】:

我正在安装一个库,在make之后收到错误消息:

gcc -Wcast-qual -Wswitch -Werror-implicit-function-declaration -Wall -Wextra -Wundef -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wno-unused -std=c99  -U__STRICT_ANSI__ -g -O0 -UNDEBUG -I../mlgmpidl -I../apron -I/usr/include -I/usr/local/include -I/usr/lib/ocaml -I/usr/local/lib/ocaml -c -o scalar_caml_debug.o scalar_caml.c
In file included from scalar_caml.c:23:0:
../mlgmpidl/gmp_caml.h: In function ‘camlidl_mpfr_rnd_t_c2ml’:
../mlgmpidl/gmp_caml.h:49:3: error: ‘GMP_RND_MAX’ undeclared (first use in this function)
../mlgmpidl/gmp_caml.h:49:3: note: each undeclared identifier is reported only once for each function it appears in
../mlgmpidl/gmp_caml.h: In function ‘camlidl_mpfr_rnd_t_ml2c’:
../mlgmpidl/gmp_caml.h:52:24: error: ‘GMP_RND_MAX’ undeclared (first use in this function)
make[1]: *** [scalar_caml_debug.o] Error 1

有谁知道发生了什么?也许它与GMP的版本有关,有谁知道如何检查它?非常感谢

Edit1: ldconfig -p | grep gmp 返回

libgmpxx.so.4 (libc6) => /usr/lib/libgmpxx.so.4
libgmpxx.so (libc6) => /usr/lib/libgmpxx.so
libgmp.so.3 (libc6) => /usr/lib/libgmp.so.3
libgmp.so (libc6) => /usr/lib/libgmp.so

/usr/local/include/ 包含:gmp.h mpf2mpfr.h mpfr.h/usr/local/lib/ 包含 alt-ergo libgmp.a libgmp.so libgmp.so.10.0.2 libmpfr.la libmpfr.so.4 ocaml python2.7 coq libgmp.la libgmp.so.10 libmpfr.a libmpfr.so libmpfr.so.4.0.1 python2.6 site_ruby

谁能告诉我我的机器上安装了哪个版本的 GMP?

【问题讨论】:

  • ldconfig -p 可用于确定库的版本——我假设您使用的是 Linux。我不确定 OSX 中的等价物,但我确信既然您知道可能的命令,OSX 和 linux 就有同义词指南。
  • @nlucaroni,感谢您的帮助...我正在使用 Linux,我已经编辑了我的初始帖子,您能帮忙吗?
  • 你从哪里得到mlgmpidl?那是什么版本?从我在网上找到的来源中,我在gmp_caml.h 中没有看到任何关于GMP_RND_MAX 的信息。
  • 其实我没有下载正确版本的mlgmpidl...

标签: ocaml gmp


【解决方案1】:

您的 libgmp-dev 版本可能比您使用的 mlgmpidl 版本旧,这说明 mlgmpidl 要求未定义的内容。

【讨论】: