All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] missing dlfcn.h
       [not found] <1543869406.2474659.1517222386735.ref@mail.yahoo.com>
@ 2018-01-29 10:39 ` Laurent Charpentier
  2018-01-29 11:35   ` Baruch Siach
  0 siblings, 1 reply; 3+ messages in thread
From: Laurent Charpentier @ 2018-01-29 10:39 UTC (permalink / raw)
  To: buildroot

Hi everyone,

The non-regression builds show the following error for the "open-lldp" package for 2 toolchains (br-arm-full-static, br-m68k-5208-full):

weak_readline.c:30:19: fatal error: dlfcn.h: No such file or directory
 #include <dlfcn.h>
                   ^
compilation terminated.

The "dlfcn.h" file is located under <toolchain>/sysroot/usr/include/dlfcn.h for all toolchains except for the br-arm-full-static and br-m68k-5208-full toolchains where the file does not exist.


Other projects includes this file ("iproute2" in file iplink.c for example) and do not report the problem.

Question: how to fix this error? is it a toolchain issue?

Thank you.
Best Regards,

Laurent

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Buildroot] missing dlfcn.h
  2018-01-29 10:39 ` [Buildroot] missing dlfcn.h Laurent Charpentier
@ 2018-01-29 11:35   ` Baruch Siach
  2018-01-29 12:47     ` Laurent Charpentier
  0 siblings, 1 reply; 3+ messages in thread
From: Baruch Siach @ 2018-01-29 11:35 UTC (permalink / raw)
  To: buildroot

Hi Laurent,

On Mon, Jan 29, 2018 at 10:39:46AM +0000, Laurent Charpentier wrote:
> The non-regression builds show the following error for the "open-lldp" 
> package for 2 toolchains (br-arm-full-static, br-m68k-5208-full):
> 
> weak_readline.c:30:19: fatal error: dlfcn.h: No such file or directory
>  #include <dlfcn.h>
>                    ^
> compilation terminated.
> 
> The "dlfcn.h" file is located under <toolchain>/sysroot/usr/include/dlfcn.h 
> for all toolchains except for the br-arm-full-static and br-m68k-5208-full 
> toolchains where the file does not exist.

That is because these toolchain can only produce static executables. The C 
library in these toolchain does not provide the dynamic linking interface 
(dlsym, dlopen, etc.). So the dlfcn.h header is not present.

> Other projects includes this file ("iproute2" in file iplink.c for example) 
> and do not report the problem.

iproute2 provides a local header in include/dlfcn.h. The toolchain dlfnc.h 
header is only included when shared library support is enabled:

#ifndef NO_SHARED_LIBS
#include_next <dlfcn.h>
#else
...

> Question: how to fix this error? is it a toolchain issue?

If there is an easy way to make open-lldp support static build, that would be 
best. Otherwise, the fix is to make open-lldp depend on !BR2_STATIC_LIBS, like 
many other packages in Buildroot.

baruch

-- 
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Buildroot] missing dlfcn.h
  2018-01-29 11:35   ` Baruch Siach
@ 2018-01-29 12:47     ` Laurent Charpentier
  0 siblings, 0 replies; 3+ messages in thread
From: Laurent Charpentier @ 2018-01-29 12:47 UTC (permalink / raw)
  To: buildroot

Hi Baruch,
Thank you very much for your answer.I've just sent a patch to fix the error (enforce dynamic linking usage).
Best Regards,Laurent

      From: Baruch Siach <baruch@tkos.co.il>
 To: Laurent Charpentier <laurent_pubs@yahoo.com> 
Cc: Buildroot <buildroot@buildroot.org>
 Sent: Monday, January 29, 2018 12:35 PM
 Subject: Re: [Buildroot] missing dlfcn.h
   
Hi Laurent,

On Mon, Jan 29, 2018 at 10:39:46AM +0000, Laurent Charpentier wrote:
> The non-regression builds show the following error for the "open-lldp" 
> package for 2 toolchains (br-arm-full-static, br-m68k-5208-full):
> 
> weak_readline.c:30:19: fatal error: dlfcn.h: No such file or directory
>? #include <dlfcn.h>
>? ? ? ? ? ? ? ? ? ? ^
> compilation terminated.
> 
> The "dlfcn.h" file is located under <toolchain>/sysroot/usr/include/dlfcn.h 
> for all toolchains except for the br-arm-full-static and br-m68k-5208-full 
> toolchains where the file does not exist.

That is because these toolchain can only produce static executables. The C 
library in these toolchain does not provide the dynamic linking interface 
(dlsym, dlopen, etc.). So the dlfcn.h header is not present.

> Other projects includes this file ("iproute2" in file iplink.c for example) 
> and do not report the problem.

iproute2 provides a local header in include/dlfcn.h. The toolchain dlfnc.h 
header is only included when shared library support is enabled:

#ifndef NO_SHARED_LIBS
#include_next <dlfcn.h>
#else
...

> Question: how to fix this error? is it a toolchain issue?

If there is an easy way to make open-lldp support static build, that would be 
best. Otherwise, the fix is to make open-lldp depend on !BR2_STATIC_LIBS, like 
many other packages in Buildroot.

baruch

-- 
? ? http://baruch.siach.name/blog/ ? ? ? ? ? ? ? ? ~. .~? Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
? - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot


   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20180129/4487dccd/attachment.html>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-01-29 12:47 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1543869406.2474659.1517222386735.ref@mail.yahoo.com>
2018-01-29 10:39 ` [Buildroot] missing dlfcn.h Laurent Charpentier
2018-01-29 11:35   ` Baruch Siach
2018-01-29 12:47     ` Laurent Charpentier

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.