[yocto] How to find libraries when building software

Gary Thomas gary at mlbassoc.com
Thu Apr 2 10:58:07 PDT 2015

On 2015-04-02 11:36, Andy Falanga (afalanga) wrote:
> HI,
> Thanks to Gary Thomas' response, I was able to get the python libraries from Boost built.  Now, when I'm building my own library, which requires libboost_python, the configure script isn't able to find it.  How do I work with these cross compilation environments?
> What I have is this.  I added the line below to local.conf as Gary instructed.
> PACKAGECONFIG_pn-boost = "python"
> I then ran
> bitbake core-image-minimal
> This built both python and the full set of boost (include libboost_python).  I see this in <output_dir>/sysroots/zc706-zynq7/usr/lib.  (In case it's relevant, this environment was constructed using /opt/yocto/poky-dizzy-12.0.1/oe-init-build-env.)  I then use a script that a co-worker wrote (quite simple) which configures the paths accordingly to use the cross compiler toolset.  My path is as follows:
> /home/afalanga/src/crisscross/tmp/sysroots/x86_64-linux/usr/bin/arm-poky-linux-gnueabi:/home/afalanga/src/crisscross/tmp/sysroots/x86_64-linux/usr/bin:/opt/yocto/poky-dizzy-12.0.1/scripts:/opt/yocto/poky-dizzy-12.0.1/bitbake/bin:/opt/petalinux-v2014.4-final/tools/linux-i386/arm-xilinx-linux-gnueabi/bin:/opt/petalinux-v2014.4-final/tools/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
> In my own library project, I run my configure script with this:
> ./configure --host=arm-poky-linux-gnueabi
> All is working quite well except that I run into this error:
> ...
> checking for Boost headers version >= 1.47.0... yes
> checking for Boost's header version... 1_56
> checking for the toolset name used by Boost for arm-poky-linux-gnueabi-g++... gcc49 -gcc
> checking boost/system/error_code.hpp usability... yes
> checking boost/system/error_code.hpp presence... yes
> checking for boost/system/error_code.hpp... yes
> checking for the Boost system library... yes
> checking boost/filesystem/path.hpp usability... yes
> checking boost/filesystem/path.hpp presence... yes
> checking for boost/filesystem/path.hpp... yes
> checking for the Boost filesystem library... (cached) yes
> checking boost/python.hpp usability... no
> checking boost/python.hpp presence... no
> checking for boost/python.hpp... no
> configure: error: cannot find boost/python.hpp
> I can find this file in <output_dir>/sysroots/zx706-zinq7/usr/include/boost, why can't the configure script?  What's wrong with how I've done things?  Or, and probably much more beneficial, when I say, "--host=arm-poky-linux-gnueabi" what does that actually mean?  Where are these things installed?  Why is it saying that it cannot find the header when I can?  The only rational explanation is that it's looking somewhere other than where I am.  Thus, I don't understand as much as I should.  What should I read in the manual?

Another thing to look at is the 'config.log' in your build
(for your "library" recipe).  It should tell you more about
why it can't find boost/python.hpp

Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world

More information about the yocto mailing list