[yocto] Newbie question: How to get dependencies into compile of custom recipe?

Richard Purdie richard.purdie at linuxfoundation.org
Tue Apr 22 01:42:33 PDT 2014


On Tue, 2014-04-22 at 09:57 +0200, Neuer User wrote:
> Hi
> 
> Sorry for this simple question. I've just started building my first
> image with yocto and would now like to add a (very simple) own recipe.
> 
> I followed the Yocto Development guide, added my own layer and included
> the "helloworld" example.
> 
> Now I would like to exchange the helloworld.c code with a simple
> gstreamer-rtsp server code
> (http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/tree/examples/test-launch.c).
> 
> I changed the bb file as follows, adding expecially the DEPENDS:
> 
> #
> # This file was derived from the 'Hello World!' example recipe in the
> # Yocto Project Development Manual.
> #
> 
> DESCRIPTION = "Simple helloworld application"
> SECTION = "multimedia"
> LICENSE = "MIT"
> LIC_FILES_CHKSUM =
> "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
> PR = "r0"
> 
> SRC_URI = "file://cameraserver.c"
> 
> DEPENDS = "gst-rtsp gstreamer"
> 
> S = "${WORKDIR}"
> 
> do_compile() {
>              ${CC} cameraserver.c -o cameraserver
> }
> 
> do_install() {
>              install -d ${D}${bindir}
>              install -m 0755 cameraserver ${D}${bindir}
> }
> 
> 
> The package "gst-rtsp" is correctly built (as
> libgstrtspserver-0.10-0-0.10.8-r0 at cortexa9hf_vfp_neon), but the
> compilation process of the "cameraserver.c" does not find the necessary
> header include files.
> 
> NOTE: recipe camera-server-0.1-r0: task do_compile: Started
> Log data follows:
> | DEBUG: Executing shell function do_compile
> | cameraserver.c:20:21: fatal error: gst/gst.h: No such file or directory
> |  #include <gst/gst.h>
> |                      ^
> | compilation terminated.
> | WARNING: exit code 1 from a shell command.
> | ERROR: Function failed: do_compile (log file is located at
> /home/ubuntu/yocto/build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/camera-server/0.1-r0/temp/log.do_compile.26393)
> NOTE: recipe camera-server-0.1-r0: task do_compile: Failed
> 
> 
> The debug of bitbake shows, however, that it correctly identifies the
> dependent packages:
> 
> DEBUG: providers for gst-rtsp are: ['gst-rtsp']
> DEBUG: sorted runtime providers for gst-rtsp are:
> ['/home/ubuntu/yocto/sources/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer/gst-rtsp_0.10.8.bb']
> DEBUG: adding
> '/home/ubuntu/yocto/sources/meta-openembedded/meta-multimedia/recipes-multimedia/gstreamer/gst-rtsp_0.10.8.bb'
> to satisfy runtime 'gst-rtsp'
> DEBUG: providers for gstreamer are: ['gstreamer']
> DEBUG: sorted runtime providers for gstreamer are:
> ['/home/ubuntu/yocto/sources/poky/meta/recipes-multimedia/gstreamer/gstreamer_0.10.36.bb']
> DEBUG: adding
> '/home/ubuntu/yocto/sources/poky/meta/recipes-multimedia/gstreamer/gstreamer_0.10.36.bb'
> to satisfy runtime 'gstreamer'
> 
> 
> So, what am I doing wrong? Do I explicitly need to add the dependencies
> to the compile environment somehow? If yes, where are the found
> directories stored?
> 
> Or am I doing this all very wrong? I am really very new to Yocto.

Basically, you need to pass in the correct compiler and linker flags.

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/faq/html/chapter-developing.html

Adding:

`pkg-config --cflags --libs gstreamer`

to your compiler line will probably help. The system will automatically
figure out things from there, the environment contains things that
pkg-config can use to generate the correct options.

Cheers,

Richard







More information about the yocto mailing list