[cairo] 'implicit declaration of function' error during compilation

Victor Engmark victor.engmark at gmail.com
Tue Feb 8 07:15:31 PST 2011


On Tue, Feb 8, 2011 at 4:05 PM, Andrea Canciani <ranma42 at gmail.com> wrote:
> On Tue, Feb 8, 2011 at 3:49 PM, Victor Engmark <victor.engmark at gmail.com> wrote:
>> On Tue, Feb 8, 2011 at 1:32 PM, Victor Engmark <victor.engmark at gmail.com> wrote:
>>> On Tue, Feb 8, 2011 at 12:18 PM, Andrea Canciani <ranma42 at gmail.com> wrote:
>>>> On Tue, Feb 8, 2011 at 12:09 PM, Victor Engmark
>>>> <victor.engmark at gmail.com> wrote:
>>>>> Hi all,
>>>>>
>>>>> I have tried for some time now to compile Cairo, but I always run into
>>>>> the same problem:
>>>>>
>>>>>  CC     cairo-bentley-ottmann.lo
>>>>> In file included from cairo-bentley-ottmann.c:42:
>>>>> cairo-freelist-private.h: In function '_cairo_freepool_alloc_from_pool':
>>>>> cairo-freelist-private.h:104: error: implicit declaration of function
>>>>> 'VALGRIND_MAKE_MEM_UNDEFINED'
>>>>> cairo-freelist-private.h:104: warning: nested extern declaration of
>>>>> 'VALGRIND_MAKE_MEM_UNDEFINED'
>>>>> cairo-freelist-private.h: In function '_cairo_freepool_alloc':
>>>>> cairo-freelist-private.h:117: error: implicit declaration of function
>>>>> 'VALGRIND_MAKE_MEM_DEFINED'
>>>>> cairo-freelist-private.h:117: warning: nested extern declaration of
>>>>> 'VALGRIND_MAKE_MEM_DEFINED'
>>>>> cairo-freelist-private.h: In function '_cairo_freepool_free':
>>>>> cairo-freelist-private.h:136: error: implicit declaration of function
>>>>> 'VALGRIND_MAKE_MEM_NOACCESS'
>>>>> cairo-freelist-private.h:136: warning: nested extern declaration of
>>>>> 'VALGRIND_MAKE_MEM_NOACCESS'
>>>>> make[5]: *** [cairo-bentley-ottmann.lo] Error 1
>>>>>
>>>>> This seems to be independent of configuration options - It happens
>>>>> both with no options and with the full Monty:
>>>>> PKG_CONFIG_PATH=$(PKGTOP)$(MY_OPT_DIR)/lib/pkgconfig ./configure \
>>>>>                --prefix=$(MY_OPT_DIR) \
>>>>>                --sysconfdir=$(ETC_DIR) \
>>>>>                --disable-shared \
>>>>>                --enable-static \
>>>>>                --enable-xlib=no \
>>>>>                --enable-xlib-xrender=no \
>>>>>                --enable-win32=no
>>>>>
>>>>> I'm rather new to the intricacies of make, so this is probably my own
>>>>> fault. Any tips?
>>>>
>>>> It looks like it detected valgrind headers, but is then unable to use a
>>>> macro it expects to be in there.
>>>>
>>>> A quick-and-dirty workaround to get cairo building would be to pass
>>>> --disable-valgrind as a configure parameter,
>>>
>>> This works.
>>
>> I'm not sure if this is related to the same issue, but now it fails
>> with a different error:
>>
>> make[6]: Entering directory `.../cairo/cairo-1.10.2/util/cairo-gobject'
>>  CC     libcairo_gobject_la-cairo-gobject-enums.lo
>> In file included from cairo-gobject-enums.c:8:
>> cairo-gobject.h:44:25: error: glib-object.h: No such file or directory
>
> This looks unrelated.
>
>>
>> http://patchwork.openembedded.org/patch/3184/ might be relevant, but I
>> don't see how. Do I really have to modify the code to make this
>> compile?
>
> You can --disable-gobject.
>
> In this case the correct fix would be fix the glib-gobject package info to
> point at the correct directories. In particular, the command:
>
>  pkg-config --cflags gobject-2.0
>
> should print a list of include directory flags which make it possible for
> the compiler to find glib-gobject.h

pkg-config works with the PKG_CONFIG_PATH which was used for both GLIB
and Cairo compilation:

$ PKG_CONFIG_PATH=[...]/usr/opt/cairopango/lib/pkgconfig pkg-config
--cflags gobject-2.0
-pthread -I/usr/opt/cairopango/include/glib-2.0
-I/usr/opt/cairopango/lib/glib-2.0/include

Are these paths absolute or relative? Because the files are installed
in a directory relative to the above "[...]" path:

$ find [...] -name glib-object.h
[...]/usr/opt/cairopango/include/glib-2.0/glib-object.h

Is this maybe related to a problem in Glib 2.24.2 (which otherwise
compiled fine)?

$ PKG_CONFIG_PATH=[...]/usr/opt/cairopango/lib/pkgconfig pkg-config
--cflags glib
sh: glib-config: command not found
sh: glib-config: command not found
sh: glib-config: command not found

...or the result of the Cairo configuration?

cairo (version 1.10.2 [release]) will be compiled with:

The following surface backends:
  Image:         yes (always builtin)
  Recording:     yes (always builtin)
  Tee:           no (disabled, use --enable-tee to enable)
  XML:           no (disabled, use --enable-xml to enable)
  Skia:          no (disabled, use --enable-skia to enable)
  Xlib:          no (disabled, use --enable-xlib to enable)
  Xlib Xrender:  no (disabled, use --enable-xlib-xrender to enable)
  Qt:            no (disabled, use --enable-qt to enable)
  Quartz:        no (requires CoreGraphics framework)
  Quartz-image:  no (disabled, use --enable-quartz-image to enable)
  XCB:           no (disabled, use --enable-xcb to enable)
  Win32:         no (disabled, use --enable-win32 to enable)
  OS2:           no (disabled, use --enable-os2 to enable)
  CairoScript:   no (disabled, use --enable-script to enable)
  PostScript:    yes
  PDF:           yes
  SVG:           yes
  OpenGL:        no (disabled, use --enable-gl to enable)
  BeOS:          no (disabled, use --enable-beos to enable)
  DirectFB:      no (disabled, use --enable-directfb to enable)
  OpenVG:        no (disabled, use --enable-vg to enable)
  DRM:           no (disabled, use --enable-drm to enable)

The following font backends:
  User:          yes (always builtin)
  FreeType:      yes
  Fontconfig:    yes
  Win32:         no (disabled, use --enable-win32 to enable)
  Quartz:        no (requires CoreGraphics framework)

The following functions:
  PNG functions:   yes
  GLEW functions:  no (not required by any backend)
  GLX functions:   no (not required by any backend)
  WGL functions:   no (not required by any backend)
  EGL functions:   no (not required by any backend)
  X11-xcb functions: no (disabled, use --enable-xlib-xcb to enable)
  XCB-drm functions: no (disabled, use --enable-xcb-drm to enable)
  XCB-shm functions: no (requires --enable-xcb)
  DRM-Xr functions: no (disabled, use --enable-drm-xr to enable)

The following features and utilities:
  cairo-trace:                yes
  cairo-script-interpreter:   yes

And the following internal features:
  pthread:       yes
  gtk-doc:       no
  gcov support:  no
  symbol-lookup: no (requires bfd)
  test surfaces: no (disabled, use --enable-test-surfaces to enable)
  ps testing:    no (requires libspectre)
  pdf testing:   no (requires poppler-glib >= 0.13.3)
  svg testing:   no (requires librsvg-2.0 >= 2.15.0)


*** No native surface backends enabled for your platform. It is strongly
*** recommended that you enable the native surface backend feature for your
*** platform.

-- 
Victor Engmark


More information about the cairo mailing list