[yocto] Makefile library and debian naming
Burton, Ross
ross.burton at intel.com
Tue Nov 21 05:29:13 PST 2017
Yes, that :)
http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
Ross
On 21 November 2017 at 13:26, Guy Morand <guy at guy-morand.ch> wrote:
> Ok a quick search on the Internet and I've found out that I probably miss
> some linker parameters such as:
> -Wl,-soname,libmessages.so.0
>
> Great, I have the feeling I learned something important today!
>
> Thanks for the pointers!
>
> Guy
>
>
> On 11/21/2017 02:22 PM, Guy Morand wrote:
>
>> Ross,
>>
>> Thanks for your quick reply!
>>
>> No, I don't inherit debian and wish I could leave the so file as is, it
>> was just a quick and dirty hack to compile my image.
>>
>> > Another indication of this is the lack of renaming. Look at
>> > the makefile, specifically the specified soname.
>>
>> The Makefile is written by myself. The library is built as follow:
>> $(SHARED_OUT_DIR)/%.o: %.c
>> $(CC) $(CFLAGS) -fPIC -c -o $@ $<
>>
>> $(SHARED_OUT_DIR)/$(SHARED_LIB_NAME): $(SHARED_OBJS)
>> $(CC) -shared $(LDFLAGS) $(SHARED_OBJS) -o $@
>>
>> What do you mean with "lack of renaming", do you have some pointers?
>> Something with LDFLAGS? What is the specified "soname"?
>>
>> Guy
>>
>> On 11/21/2017 02:13 PM, Burton, Ross wrote:
>>
>>> You don't need to inherit debian in a recipe, that is meant to be a
>>> distro-level inherit (and is inherited out of the box).
>>>
>>> Deleting the .so breaks non-static linking as that is the file which is
>>> used to link against, so don't delete it. It should be in the -dev package.
>>>
>>> The QA error is probably because your library is built wrong in the
>>> makefile. Another indication of this is the lack of renaming. Look at the
>>> makefile, specifically the specified soname.
>>>
>>> Ross
>>>
>>> On 21 November 2017 at 13:00, Guy Morand <guy at guy-morand.ch <mailto:
>>> guy at guy-morand.ch>> wrote:
>>>
>>> Hallo Yocto developpers!
>>>
>>> I'm trying to build a Makefile based library. The recipe looks like
>>> this:
>>> ---[recipe mesages.bb <http://mesages.bb>]---
>>> # SNIP recipe header
>>>
>>> do_compile() {
>>> oe_runmake LDFLAGS="${LDFLAGS}" shared-lib
>>> oe_runmake LDFLAGS="${LDFLAGS}" static-lib
>>> }
>>>
>>> do_install() {
>>> oe_runmake install DESTDIR=${D}${prefix}
>>>
>>> # Fix pkg-config
>>> sed -i 's,${D},,g' ${D}/usr/lib/pkgconfig/messages.pc
>>>
>>> # FIXME: Try to make a debian package libmessages instead
>>> # This avoids errors when installing an app linking with this
>>> library!
>>> rm ${D}/${libdir}/lib${PN}.so
>>> }
>>> ---[/recipe mesages.bb <http://mesages.bb>]---
>>>
>>> The resulted image in WORKDIR looks like this:
>>> ---[WORKDIR/image]---
>>> image/usr/lib/libmessages.so.0.3.0
>>> image/usr/lib/libmessages.so.0
>>> image/usr/lib/libmessages.a
>>> image/usr/lib/pkgconfig/messages.pc
>>> image/usr/include/messages/<all my headers>
>>> ---[/WORKDIR/image]---
>>>
>>> The generated ipk packages are:
>>> ---[ipks]---
>>> messages-dev_git.ipk
>>> messages_git.ipk
>>> messages-staticdev_git.ipk
>>> messages-dbg_git.ipk
>>> ---[/ipks]---
>>>
>>> The problem is that an application compiled with this library links
>>> against the static library. If I don't remove the .so file from the
>>> recipe, my application fails installing:
>>> ---[bitbake error]---
>>> ERROR: myApp do_package_qa: QA Issue: /usr/bin/myApp contained in
>>> package myApp requires libmessages.so, but no providers found in
>>> RDEPENDS_myApp? [file-rdeps]
>>> ---[/bitbake error]---
>>>
>>> Probably because the .so gets packed in the messages-dev.ipk ...
>>>
>>> The strange thing is that I would expect a generated ipk with debian
>>> naming such as:
>>> libmessages_git.ipk
>>> libmessages-dbg_git.ipk
>>> libmessages-dev_git.ipk
>>> libmessages-staticdev_git.ipk
>>>
>>>
>>> I have other libraries based on cmake and everything works as
>>> expected!
>>>
>>> Despite the recipe already inherits "debian", explicitly inheriting
>>> this class doesn't help.
>>>
>>> What am I doing wrong?
>>>
>>> Guy Morand
>>> -- _______________________________________________
>>> yocto mailing list
>>> yocto at yoctoproject.org <mailto:yocto at yoctoproject.org>
>>> https://lists.yoctoproject.org/listinfo/yocto
>>> <https://lists.yoctoproject.org/listinfo/yocto>
>>>
>>>
>>> --
> _______________________________________________
> yocto mailing list
> yocto at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20171121/e779e10a/attachment.html>
More information about the yocto
mailing list