ocamlfind - Problemas al compilar el proyecto ocaml en Debian bulleye: referencia indefinida a shm_unlink y shm_open

CorePress2024-01-24  12

Intentando compilar el proyecto ocaml desde

https://gitlab.com/benjgregoire/maskverif/

(No tengo idea sobre ocaml) recibo, después de instalar todas las bibliotecas que faltan, el mensaje de error

+ ocamlfind ocamlopt -rectypes -cclib -lrt -linkpkg -g -thread -package zarith,unix,menhirLib,ocamlgraph -I src src/util.cmx src/expr.cmx src/pexpr.cmx src/poly.cmx src/poly_solve.cmx src/shrcnt.cmx src/state.cmx src/checker.cmx src/ilang_ast.cmx src/ilang_parser.cmx src/ilang_lexer.cmx src/parsetree.cmx src/prog.cmx src/ilang.cmx src/parser.cmx src/lexer.cmx src/main.cmx src/shrcnt_low.o -o src/main.native
/usr/bin/ld: src/shrcnt_low.o: in function `shrcnt_destroy':
/home/myname/work/maskverif/_build/src/shrcnt_low.c:74: undefined reference to `shm_unlink'
/usr/bin/ld: src/shrcnt_low.o: in function `shrcnt_create':
/home/myname/work/maskverif/_build/src/shrcnt_low.c:99: undefined reference to `shm_open'
/usr/bin/ld: /home/myname/work/maskverif/_build/src/shrcnt_low.c:95: undefined reference to `shm_unlink'

Por lo que encontré en Internet, parece que la biblioteca rt se entrega al enlazador gcc en la posición incorrecta a través de -lrt, pero no tengo idea de cómo solucionar este problema, ya que algún binario ocaml lo llama.

¿Cómo puedo solucionar este problema?



------------------------------------

Se informó del mismo problema en este número.

La respuesta del mantenedor fue la siguiente:

Este problema fue muy complicado de solucionar. Puedes encontrar el cuSolución actual en la rama SPINI.

Entonces, puedes intentar verificar la rama SPINI e intentar compilarla.

Hasta donde tengo entendido, el problema es que en el Makefile no pueden pasar correctamente el -lrt al vinculador. En la sucursal de SPINI, pasaron a utilizar el sistema de construcción de dunas y resolvieron este problema.

1

1

¡Muchas gracias! Ahora tengo un mensaje de error extraño acerca de que la versión 2.8 del lenguaje dune no es compatible, a pesar de haber instalado la 2.7.1, pero espero resolverlo cuandoTengo un poco de tiempo para ello. ¡Gran ayuda!

- j.p.

28/03/2021 a las 19:05



------------------------------------

Mientras tanto pude compilar la rama SPINI como lo sugirió jubnvz en su respuesta. No funcionó usando los paquetes ocaml/opam/dune proporcionados por debian/bulleye, sino desinstalando todos los paquetes de Debian relacionados con ocaml y siguiendo las instrucciones de instalación del README en https://gitlab.com/benjgregoire/maskverif/tree/SPINI funcionó bien para mí.

Compartir mejorar esta respuestaejem Seguir Respondido

15 de abril de 2022 a las 10:47 am

wiki de la comunidad

j.p.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare