[yocto] Boost + Yocto

Khem Raj raj.khem at gmail.com
Fri Oct 6 14:46:54 PDT 2017


On Fri, Oct 6, 2017 at 7:56 AM, Patrick Vacek
<patrick at advancedtelematic.com> wrote:
> On 06.10.2017 15:36, Khem Raj wrote:
>> On Fri, Oct 6, 2017 at 5:05 AM, Patrick Vacek
>> <patrick at advancedtelematic.com> wrote:
>>> Hello,
>>>
>>> I'm trying to understand how Yocto figures out which Boost libraries to
>>> install in an image. I've been studying the Boost recipes and it looks
>>> like RRECOMMENDS is used to specify all of the libraries, but yet my
>>> image only gets a subset of them. It's the subset that I typically need,
>>> so it's fine, but I want to understand how the process works.
>>>
>>> There's an additional tricky detail that got me looking into this. When
>>> I bitbake a recipe I've written which just lists "boost" in DEPENDS,
>>> running ldd the compiled executable does not appear to depend on a
>>> couple of the boost libraries that I'd specified in CMake (although it
>>> does depend on several others). Only the libraries that are specifically
>>> mentioned with ldd are installed in the image. However, if I manually
>>> cross-compile the same code via the native-sdk, ldd indicates that all
>>> the expected libraries are dependencies. As such, that executable will
>>> not be able to run on my device until I install the missing libraries.
>>> Oddly, those libraries are built with bitbake, but not installed! How
>>> does bitbake manage to remove some of these dependencies?
>>
>> it could be thst applications dependency detection mechanism is behaving
>> differently and presenting different set to linker.
>>
>> Secondly its possible that linker options in play are different e.g.
>> --as-needed and --copy-dt-needed-entries might be in play
>>
>
> It turns out that the troublesome boost libraries are not actually used
> after all! I haven't yet deduced if the sort of linker flags you
> mentioned are being used, but that may be at the root of the issue.
>
> What's now confusing me is why, after removing all references to the
> extraneous libraries, CMake still finds them and the cross-compiled
> binary still links against them. The only thought I've had so far is
> that they are a transitive dependency, although that seems unlikely.
> However, that's probably a matter to look into with CMake, not Yocto...

its possible that the faulty build is using a linker which defaults to
pulling libraries from DT_NEEDED segments



More information about the yocto mailing list