[systemd-devel] systemd fails to build with static kmod library
Lennart Poettering
lennart at poettering.net
Thu Jun 6 01:25:17 PDT 2013
On Tue, 04.06.13 14:44, Cristian Rodríguez (crrodriguez at opensuse.org) wrote:
> El 04/06/13 04:39, Lennart Poettering escribió:
> >On Mon, 03.06.13 00:52, Stephan Raue (mailinglists at openelec.tv) wrote:
> >
> >>
> >>Am 02.06.2013 19:36, schrieb Greg KH:
> >>>On Sun, Jun 02, 2013 at 07:28:57PM +0200, Stephan Raue wrote:
> >>>
> >>>>i dont agree, i some cases it makes sense. since udev is included in
> >>>>systemd and udev has now its own buildins for the modprobe stuff it
> >>>>should be possible to use kmod statically linked, esp. if no other
> >>>>installed program uses kmod (and for our usage the kmod userspace
> >>>>binarys are not neccessary)
> >>>
> >>>If you are so worried about other programs / users calling kmod, then
> >>>just build your needed kernel modules into the kernel and don't use any
> >>>kernel modules at all.
> >>>
> >>i am not much worried about this, but more about the comment "Do not
> >>use static linking, with systemd, ever, in fact do not use with any
> >>other component.". Statically linking works for so many programs and
> >>even kmod supports the "--enable-static" configure option. So
> >>basically i tried to report this broken behavior, because i never
> >>seen a statement like "dont link anything statically against
> >>systemd"
> >
> >Static linking is broken for many reasons. One reason is the namespace
> >issue you ran into.
> >
> >If you want to make static linking work for you, then I recommend
> >working on binutils to fix the namespacing issues (i.e. introduce
> >private visibility to static libraries, good luck).
> >
> >To make this very clear: we will continue to use *private* symbols in
> >systemd that are not namespaced. We will not rename these symbols just
> >because some other library has similarly named *private*
> >symbols. Staticially linking means creating a universal namespace for
> >symbols, and that's just impossible and broken...
>
> Attached is a patch to disallow --enable-static when building systemd.
>
>
> >From ff9c55d74e64a00bf2895f63b139e63d981783c2 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez at opensuse.org>
> Date: Tue, 4 Jun 2013 14:42:56 -0400
> Subject: [PATCH] Do not allow --enable static
>
> ---
> configure.ac | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/configure.ac b/configure.ac
> index d266601..bd46b33 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -44,6 +44,8 @@ AS_IF([test "x$host_cpu" = "xmips" || test "x$host_cpu" = "xmipsel" ||
> LT_PREREQ(2.2)
> LT_INIT([disable-static])
>
> +AS_IF([test "x$enable_static" = "xyes"], [AC_MSG_ERROR([--enable-static is not supported by systemd])])
> +
> # i18n stuff for the PolicyKit policy files
> IT_PROG_INTLTOOL([0.40.0])
Thanks! Applied!
Lennart
--
Lennart Poettering - Red Hat, Inc.
More information about the systemd-devel
mailing list