ocaml / Zarith

The Zarith library implements arithmetic and logical operations over arbitrary-precision integers and rational numbers. The implementation, based on GMP, is very efficient.
Other
226 stars 69 forks source link

Issue while installing `Zarith` #154

Open amit9oct opened 2 months ago

amit9oct commented 2 months ago

When I run opam install zarith. It fails with the following error:

The following actions will be performed:
  ∗ install zarith 1.13

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
⬇ retrieved zarith.1.13  (cached)
[ERROR] The compilation of zarith.1.13 failed at "make".

#=== ERROR while compiling zarith.1.13 ========================================#
# context     2.1.3 | linux/x86_64 | ocaml-base-compiler.5.2.0 | https://opam.ocaml.org#04cef9a8
# path        ~/.opam/MathComp/.opam-switch/build/zarith.1.13
# command     ~/.opam/opam-init/hooks/sandbox.sh build make
# exit-code   2
# env-file    ~/.opam/log/zarith-1637460-25a062.env
# output-file ~/.opam/log/zarith-1637460-25a062.out
### output ###
# [...]
# ocamlopt -g -I +compiler-libs  -c z.ml
# ocamlopt -g -I +compiler-libs  -c q.ml
# ocamlopt -g -I +compiler-libs  -c big_int_Z.ml
# ocamlmklib -g -failsafe -o zarith zarith_version.cmx z.cmx q.cmx big_int_Z.cmx -lgmp 
# ocamlopt -shared -o zarith.cmxs -I . zarith.cmxa -linkall
# /usr/bin/ld: /home/amthakur/.local/libgmp-dev/usr/lib/x86_64-linux-gnu/libgmp.a(realloc2.o): warning: relocation against `__gmp_reallocate_func' in read-only section `.text'
# /usr/bin/ld: /home/amthakur/.local/libgmp-dev/usr/lib/x86_64-linux-gnu/libgmp.a(lt4-clear.o): relocation R_X86_64_PC32 against symbol `__gmp_free_func' can not be used when making a shared object; recompile with -fPIC
# /usr/bin/ld: final link failed: bad value
# collect2: error: ld returned 1 exit status
# File "caml_startup", line 1:
# Error: Error during linking (exit code 1)
# make: *** [project.mak:80: zarith.cmxs] Error 2

<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
┌─ The following actions failed
│ λ build zarith 1.13
└─ 
╶─ No changes have been performed

I have tried re-installing the opam, removing the switch and cleaning up cache etc. Nothing seems to work. Other packages are getting installed correctly but Zarith keeps failing with this error.

antoinemine commented 2 months ago

What distribution are you using and how did you install gmp? I'm not sure why it is in /home/amthakur/.local/libgmp-dev/usr/lib/x86_64-linux-gnu/libgmp.a...

arozovyk commented 2 weeks ago

There have been issues with gmp and macos, especially ARM chip ones.

I've been able to resolve this by locating the gmp installed via brew:

brew info gmp

/opt/homebrew/Cellar/gmp/6.3.0

And building Zarith locally :


export CPPFLAGS="-I/opt/homebrew/Cellar/gmp/6.3.0/include $CPPFLAGS"
export LDFLAGS="-L/opt/homebrew/Cellar/gmp/6.3.0/lib $LDFLAGS"

./configure
make
antoinemine commented 2 weeks ago

There have been issues with gmp and macos, especially ARM chip ones.

What kind of issues? Have you tried Zarith 1.14?

I ask this because the issue reported here initially by camit9oct corresponds to Zarith 1.13 on x86_64 with a version of gmp possibly installed by hand. It may not correspond to your issues (if you're using 1.14 and/or ARM) or may have been already fixed (if you're using 1.13). Also, the page you're linking does not mention ARM and may not be related to any issue that can be solved by changing paths, so I'm a bit confused about the link between the reported issue and your proposed solution.

Concerning your issue. Homebrew has changed its install paths since ARM. But we now rely on pkg-config for the include and library paths, so, my hope is that such a change is automatically taken care of (I may be mistaken).

arozovyk commented 2 weeks ago

My bad, i missinterpreted this issue as being related to the problem i encountered. I created a separate issue for my specific problem.