[poky] Library paths for Makefile based recipes

Tian, Kevin kevin.tian at intel.com
Tue Dec 28 16:43:07 PST 2010


>From: Darren Hart
>Sent: Wednesday, December 29, 2010 8:30 AM
>
>I'm working on packaging kernelshark ("make gui" for the trace-cmd recipe
>basically). It fails trying to link to -lgtk-x11-2.0. I have added gtk+
>as a DEPENDS and the library does exist in the sysroots. I have also added
>"inherit pkgconfig" as the project Makefile uses it extensively.
>
>gcc trace-view-main.o trace-view.o trace-view-store.o trace-filter.o trace-compat.o
>trace-hash.o libtracecmd.a -rdynamic -o trace-view -pthread -lgtk-x11-2.0 -lgdk-x11-2.0
>-latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0
>-lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0   -L.
>-ltracecmd -ldl
>| /usr/bin/ld: cannot find -lgtk-x11-2.0

it looks that native gcc/binutils are used here, instead of the cross one. Or else gcc 
should have a target prefix like i568-poky-linux-gcc, and ld should come from your 
native sysroot...

>| collect2: ld returned 1 exit status
>| make[1]: *** [trace-view] Error 1
>| make[1]: *** Waiting for unfinished jobs....
>| make: *** [gui] Error 2
>| FATAL: oe_runmake failed
>| ERROR: Task failed: ('function do_compile failed',
>'/vol/1/dvhart/poky.git/build/tmp/work/core2-poky-linux/kernelshark-1.0.4+git0+0d2522
>24626bd6926324f023a65f20c165232891-r0/temp/log.do_compile.12830')
>NOTE: package
>kernelshark-1.0.4+git0+0d252224626bd6926324f023a65f20c165232891-r0: task
>do_compile: Failed
>ERROR: Task 8
>(/home/dvhart/data/poky.git/meta/recipes-kernel/trace-cmd/kernelshark_git.bb,
>do_compile) failed with 1
>ERROR: '/home/dvhart/data/poky.git/meta/recipes-kernel/trace-cmd/kernelshark_git.bb'
>failed
>
>Without the "gui" target, trace-cmd doesn't link against anything outside of
>libc and ld, so the original recipe doesn't run into this.

given earlier confusion, I'm worried whether original trace-cmd does work as expected,
e.g. whether it runs on a non-x86 target?

>
>How does bitbake try to make the library path available to a make based
>project? I've tried various incantations from other non-autotools gtk+
>based recipes:
>
>do_compile_prepend = " \
>        export LDFLAGS='${LDFLAGS} `${STAGING_BINDIR_NATIVE}/pkg-config
>gtk+-2.0 --libs`'; \
>       export CFLAGS='${CFLAGS} -I./ `${STAGING_BINDIR_NATIVE}/pkg-config
>gtk+-2.0 --cflags`'; "
>
>export VERBOSE=1
>CFLAGS += "-L ${STAGING_LIBDIR}"
>LDFLAGS += "-L ${STAGING_LIBDIR}"
>CFLAGS_prepend = "-L ${STAGING_LIBDIR}"
>LDFLAGS_prepend = "-L ${STAGING_LIBDIR}"
>
>However, these don't appear to impact the commands executed by the project
>Makefile (despite the fact that it tries to import existing CFLAGS).
>

No idea here. You may need check the Makefile carefully whether there's any
tricky lines breaking things here... At least you may change Makefile directly first. :-)

Thanks
Kevin



More information about the poky mailing list