Lance,
On Wed, 2 Nov 2016 15:04:07 -0600, Lance Fredrickson wrote:
I just have
not concluded what exactly the problem in 1.0.19 is for
you. I am willing to get back the functionality you need.
I just have not understand it. So an example is always useful to get
me understand your problem.
The result is that programs that require dl symbols
fail to compile at
all in a static matter.
I think the idea is that if you're doing a static build, then
everything should be static, and there shouldn't be any shared object
in the system, be they used at link time or at run time (via dlopen).
I do realize that the 'dl' in libdl stands
for dynamic linking, but these static programs in some cases need these
symbols nonetheless, and otherwise fail to compile. OpenVPN is one such
example. It requires libdl, and it does operate as expected when
compiled statically.
OpenVPN can be built with --disable-plugins, in which case it doesn't
use dlopen().
SoftEtherVPN, tranmission, unbound, are just a few
more I can
confirm. The list would be very large.
SoftEtherVPN, transmission seem to build fine in Buildroot in a fully
statically linked environment.
However, what confuses me is that this behavior is not new. We have
been having build failures related to dlopen()/dlfcn.h being not
available in static uClibc builds for a while. I don't see this as
being new in 1.0.19.
See for example
http://autobuild.buildroot.org/results/e92/e929799366e6f574c7b08d8635b18623….
this build failure occurs because dlfcn.h is not present in a uClibc
built with HAVE_SHARED disabled. And the uClibc version used in this
toolchain is 1.0.17.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com