Chris00 / ocaml-cairo

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

Undefined reference #26

Closed Pro-pra closed 2 years ago

Pro-pra commented 2 years ago

Hi, please tell me what is the problem with linking?

(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 -shared -linkall -I gtk -o gtk/cairo_gtk.cmxs gtk/cairo_gtk.cmxa) /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/cairo_gtk.cmxs.startup.o: in functioncaml_curry4': :(.text+0x4e): undefined reference to caml_call_gc' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/cairo_gtk.cmxs.startup.o: in functioncaml_curry4_1': :(.text+0xde): undefined reference to caml_call_gc' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/cairo_gtk.cmxs.startup.o: in functioncaml_curry4_2': :(.text+0x153): undefined reference to caml_call_gc' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/cairo_gtk.cmxs.startup.o: in functioncaml_curry2': :(.text+0x1d3): undefined reference to caml_call_gc' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/cairo_gtk.a(cairo_gtk.o): in functioncamlCairo_gtkfun_214': :(.text+0x18): undefined reference to caml_c_call' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/cairo_gtk.a(cairo_gtk.o): in functioncamlCairo_gtk__fun_216': :(.text+0x42): undefined reference to caml_c_call' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/cairo_gtk.a(cairo_gtk.o): in functioncamlCairo_gtkfun_218': :(.text+0x62): undefined reference to caml_c_call' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/cairo_gtk.a(cairo_gtk.o): in functioncamlCairo_gtk__fun_220': :(.text+0x82): undefined reference to caml_c_call' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/cairo_gtk.a(cairo_gtk.o): in functioncamlCairo_gtk__fun_222': :(.text+0x9f): undefined reference to caml_c_call' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/libcairo_gtk_stubs.a(cairo_gtk_stubs.o): in functioncaml_gdk_cairo_create': /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:65: undefined reference to Caml_state' /usr/bin/x86_64-rosa-linux-gnu-ld: /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:68: undefined reference tocaml_cairo_raise_Error' /usr/bin/x86_64-rosa-linux-gnu-ld: /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:69: undefined reference to caml_cairo_ops' /usr/bin/x86_64-rosa-linux-gnu-ld: /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:69: undefined reference tocaml_alloc_custom' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/libcairo_gtk_stubs.a(cairo_gtk_stubs.o): in function caml_gdk_cairo_set_source_color': /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:74: undefined reference toCaml_state' /usr/bin/x86_64-rosa-linux-gnu-ld: /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:74: undefined reference to caml_cairo_raise_Error' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/libcairo_gtk_stubs.a(cairo_gtk_stubs.o): in functioncaml_gdk_cairo_rectangle': /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:75: undefined reference to Caml_state' /usr/bin/x86_64-rosa-linux-gnu-ld: /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:75: undefined reference tocaml_cairo_raise_Error' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/libcairo_gtk_stubs.a(cairo_gtk_stubs.o): in function caml_gdk_cairo_region': /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:76: undefined reference toCaml_state' /usr/bin/x86_64-rosa-linux-gnu-ld: /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:76: undefined reference to GdkRegion_val' /usr/bin/x86_64-rosa-linux-gnu-ld: /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:76: undefined reference tocaml_cairo_raise_Error' /usr/bin/x86_64-rosa-linux-gnu-ld: gtk/libcairo_gtk_stubs.a(cairo_gtk_stubs.o): in function caml_gdk_cairo_set_source_pixbuf': /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:77: undefined reference toCaml_state' /usr/bin/x86_64-rosa-linux-gnu-ld: /builddir/build/BUILD/cairo2-0.6.2/_build/default/gtk/cairo_gtk_stubs.c:77: undefined reference to caml_cairo_raise_Error' collect2: error: ld returned 1 exit status

Chris00 commented 2 years ago

Did you link both with cairo-gtk and cairo?

Pro-pra commented 2 years ago

I don't know

Chris00 commented 2 years ago

Is the above error displayed when you build cairo? Using OPAM? From source?

Pro-pra commented 2 years ago
export 'GTK_CFLAGS=-O2 -fomit-frame-pointer -gdwarf-4 -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-strong --param=ssp-buffer-size=4 -m64 -mtune=generic -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -pthread '

export 'GTK_LIBS=-O2 -fomit-frame-pointer -gdwarf-4 -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -fstack-protector-strong --param=ssp-buffer-size=4 -m64 -mtune=generic -Wl,-O2  -Wl,--no-undefined   -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz -lfontconfig -lfreetype '
Pro-pra commented 2 years ago

My build variable

Pro-pra commented 2 years ago

build.log

My full build.log

Chris00 commented 2 years ago

Looks like it is build from RPM. Do other libraries install fine? The error (2nd line)

(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 -shared -linkall -I gtk -o gtk/cairo_gtk.cmxs gtk/cairo_gtk.cmxa)
/usr/bin/x86_64-rosa-linux-gnu-ld: gtk/cairo_gtk.cmxs.startup.o: in function `caml_curry4':
:(.text+0x4e): undefined reference to `caml_call_gc'

point to the fact that OCaml runtime is not present. Did you get it touch with the RPM packager?

Pro-pra commented 2 years ago

https://stackoverflow.com/questions/6001217/undefined-symbol-caml-call-gc-after-ocamlmklib

i see in /usr/lib64/ocaml:

$ ls  lib*
libasmrun.a   libasmrun_pic.a      libcamlrund.a     libcamlrun_shared.so  libthreadsnat.a
libasmrund.a  libasmrun_shared.so  libcamlruni.a     libcamlstr.a          libunix.a
libasmruni.a  libcamlrun.a         libcamlrun_pic.a  libthreads.a
Pro-pra commented 2 years ago

new version 2.6.3 compiled fine. Thank you!