Chris00 / ocaml-cairo

Binding to Cairo, a 2D Vector Graphics Library.
GNU Lesser General Public License v3.0
54 stars 8 forks source link

Pass -fcommon for relaxing default behaviour of GCC10 #25

Closed xvw closed 3 years ago

xvw commented 3 years ago

Without this flag, using pango generate some troubles (multiple definition of ...)

Chris00 commented 3 years ago

I cannot reproduce the problem. Would you share the full error message? I'd rather like to fix it than work around it.

xvw commented 3 years ago

Hi, trying to compile examples from dmlenu, I always face to:

ocamlopt examples/main.exe (exit 2)
(cd _build/default && /usr/bin/ocamlopt.opt -w @1..3@5..28@30..39@43@46..47@49..57@61..62-40 -strict-sequence -strict-formats -short-paths -keep-locs -g -o examples/main.exe /home/xvw/.opam/default/lib/base/base_internalhash_types/base_internalhash_types.cmxa -I /home/xvw/.opam/default/lib/base/base_internalhash_types /home/xvw/.opam/default/lib/base/caml/caml.cmxa /home/xvw/.opam/default/lib/sexplib0/sexplib0.cmxa /home/xvw/.opam/default/lib/base/shadow_stdlib/shadow_stdlib.cmxa /home/xvw/.opam/default/lib/base/base.cmxa -I /home/xvw/.opam/default/lib/base /home/xvw/.opam/default/lib/stdio/stdio.cmxa /usr/lib/ocaml/str.cmxa -I /usr/lib/ocaml /usr/lib/ocaml/unix.cmxa -I /usr/lib/ocaml /usr/lib/ocaml/bigarray.cmxa -I /usr/lib/ocaml /home/xvw/.opam/default/lib/cairo2/cairo.cmxa -I /home/xvw/.opam/default/lib/cairo2 backend/backend.cmxa -I backend /usr/lib/ocaml/threads/threads.cmxa -I /usr/lib/ocaml /home/xvw/.opam/default/lib/lablgtk2/lablgtk.cmxa /home/xvw/.opam/default/lib/lablgtk2/gtkThread.cmx -I /home/xvw/.opam/default/lib/lablgtk2 /home/xvw/.opam/default/lib/cairo2-pango/cairo_pango.cmxa -I /home/xvw/.opam/default/lib/cairo2-pango lib/dmlenu.cmxa /home/xvw/.opam/default/lib/easy-format/easy_format.cmxa /home/xvw/.opam/default/lib/biniou/biniou.cmxa /home/xvw/.opam/default/lib/yojson/yojson.cmxa extra/dmlenu_extra.cmxa /home/xvw/.opam/default/lib/cmdliner/cmdliner.cmxa examples/.main.eobjs/native/main.cmx)
/usr/bin/ld: backend/libbackend_stubs.a(x11_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:28: multiple definition of `caml_cairo_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:28: first defined here
/usr/bin/ld: backend/libbackend_stubs.a(x11_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:36: multiple definition of `caml_pattern_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:36: first defined here
/usr/bin/ld: backend/libbackend_stubs.a(x11_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:48: multiple definition of `caml_font_options_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:48: first defined here
/usr/bin/ld: backend/libbackend_stubs.a(x11_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:53: multiple definition of `caml_cairo_font_type'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:53: first defined here
/usr/bin/ld: backend/libbackend_stubs.a(x11_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:64: multiple definition of `caml_scaled_font_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:64: first defined here
/usr/bin/ld: backend/libbackend_stubs.a(x11_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:70: multiple definition of `caml_surface_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:70: first defined here
/usr/bin/ld: backend/libbackend_stubs.a(x11_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:96: multiple definition of `caml_path_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:96: first defined here
/usr/bin/ld: backend/libbackend_stubs.a(x11_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:154: multiple definition of `caml_cairo_ft_library_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:154: first defined here
/usr/bin/ld: backend/libbackend_stubs.a(x11_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:157: multiple definition of `caml_cairo_ft_face_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:157: first defined here
/usr/bin/ld: /home/xvw/.opam/default/lib/cairo2/libcairo_stubs.a(cairo_stubs.o):/home/xvw/.opam/default/.opam-switch/build/cairo2.0.6.1/_build/default/src/cairo_ocaml.h:53: multiple definition of `caml_cairo_font_type'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:53: first defined here
/usr/bin/ld: /home/xvw/.opam/default/lib/cairo2/libcairo_stubs.a(cairo_stubs.o):/home/xvw/.opam/default/.opam-switch/build/cairo2.0.6.1/_build/default/src/cairo_ocaml.h:28: multiple definition of `caml_cairo_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:28: first defined here
/usr/bin/ld: /home/xvw/.opam/default/lib/cairo2/libcairo_stubs.a(cairo_stubs.o):/home/xvw/.opam/default/.opam-switch/build/cairo2.0.6.1/_build/default/src/cairo_ocaml.h:70: multiple definition of `caml_surface_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:70: first defined here
/usr/bin/ld: /home/xvw/.opam/default/lib/cairo2/libcairo_stubs.a(cairo_stubs.o):/home/xvw/.opam/default/.opam-switch/build/cairo2.0.6.1/_build/default/src/cairo_ocaml.h:36: multiple definition of `caml_pattern_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:36: first defined here
/usr/bin/ld: /home/xvw/.opam/default/lib/cairo2/libcairo_stubs.a(cairo_stubs.o):/home/xvw/.opam/default/.opam-switch/build/cairo2.0.6.1/_build/default/src/cairo_ocaml.h:96: multiple definition of `caml_path_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:96: first defined here
/usr/bin/ld: /home/xvw/.opam/default/lib/cairo2/libcairo_stubs.a(cairo_stubs.o):/home/xvw/.opam/default/.opam-switch/build/cairo2.0.6.1/_build/default/src/cairo_ocaml.h:48: multiple definition of `caml_font_options_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:48: first defined here
/usr/bin/ld: /home/xvw/.opam/default/lib/cairo2/libcairo_stubs.a(cairo_stubs.o):/home/xvw/.opam/default/.opam-switch/build/cairo2.0.6.1/_build/default/src/cairo_ocaml.h:64: multiple definition of `caml_scaled_font_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:64: first defined here
/usr/bin/ld: /home/xvw/.opam/default/lib/cairo2/libcairo_stubs.a(cairo_stubs.o):/home/xvw/.opam/default/.opam-switch/build/cairo2.0.6.1/_build/default/src/cairo_ocaml.h:154: multiple definition of `caml_cairo_ft_library_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:154: first defined here
/usr/bin/ld: /home/xvw/.opam/default/lib/cairo2/libcairo_stubs.a(cairo_stubs.o):/home/xvw/.opam/default/.opam-switch/build/cairo2.0.6.1/_build/default/src/cairo_ocaml.h:157: multiple definition of `caml_cairo_ft_face_ops'; /home/xvw/.opam/default/lib/cairo2-pango/libcairo_pango_stubs.a(cairo_pango_stubs.o):/home/xvw/.opam/default/lib/cairo2/cairo_ocaml.h:157: first defined here
collect2: error: ld returned 1 exit status
File "caml_startup", line 1:
Error: Error during linking (exit code 1)
Done: 154/160 (jobs: 1)make: *** [Makefile:8: examples] Error 1

for every examples.

Chris00 commented 3 years ago

Are you using version 0.6.1 or pinned to this repository. If the former, please try the latter. If you confirm it fixes your problem—it should—I'll release a new version.

xvw commented 3 years ago

Damn, you're completely right, it is working perfectly without fcommon on trunk. Thanks a lot!

Chris00 commented 3 years ago

New release pending.

xvw commented 3 years ago

Thanks a lot (and sorry for the useless PR)