[yocto] Makefile library and debian naming

Guy Morand guy at guy-morand.ch
Tue Nov 21 05:26:56 PST 2017


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>
>>
>>



More information about the yocto mailing list