[systemd-devel] Failure(s) Building Systemd with "--enable-resolved"
Aaron_Wright at selinc.com
Aaron_Wright at selinc.com
Thu Apr 23 09:21:58 PDT 2015
Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl> wrote on 04/21/2015
01:51:29 PM:
> On Tue, Apr 21, 2015 at 08:39:35AM -0700, Aaron_Wright at selinc.com wrote:
> > I've been getting a few problems building systemd with
"--enable-resolved
> > ". Any help would be very welcomed. I don't have any problems when
> > compiling with "--disable-resolved".
> >
> > The first problem I got was this:
> >
> > CCLD libnss_resolve.la
> > libsystemd_internal_la-bus-message.o (symbol from plugin): warning:
memset
> > used with constant zero length parameter; this could be due to
transposed
> > parameters
> > /tmp/cc03x1nN.ltrans6.ltrans.o: In function
`bus_error_name_to_errno.4725
> > ':
> > cc03x1nN.ltrans6.o:(.text+0x12bb): undefined reference to
> > `__stop_BUS_ERROR_MAP'
> > cc03x1nN.ltrans6.o:(.text+0x12c2): undefined reference to
> > `__start_BUS_ERROR_MAP'
> > collect2: ld returned 1 exit status
> >
> > I got around this be removing "-flto" from "OUR_CFLAGS" in the
Makefile.
> > How is that change going to impact systemd? Is there a better way to
work
> > around this problem?
> Afaik nobody has measured that. It will certainly make your compilation
> times much shorter :)
So after some reading, LTO is an optimization flag; removing it would
potentially slow down systemd a little bit, but it shouldn't change any
behavior. I could live with that. But now I can't figure out how to get
rid of "-flto" reliably. It's not mentioned in Makefile.am. It seems to be
added by libtool automatically, but I can't figure out how to make it
stop. I tried adding "-fno-lto" to libnss_resolve_la_LDFLAGS in
Makefile.am, but libtool seems to strip that out. Presumably because it
doesn't recognize it.
>
> > After I got pass the first error, I now get this:
> >
> > CC src/resolve/resolved-dns-cache.o
> > src/resolve/resolved-dns-scope.c: In function ?dns_scope_tcp_socket?:
> > src/resolve/resolved-dns-scope.c:260:56: error: ?IP_UNICAST_IF?
undeclared
> > (first use in this function)
> > src/resolve/resolved-dns-scope.c:260:56: note: each undeclared
identifier
> > is reported only once for each function it appears in
> It was in kernel 3.4. What kernel headers are you using?
>
> Zbyszek
You're right. I'm using Kernel 3.10. I didn't have the right
linux-libc-dev package installed. So now IP_UNICAST_IF is defined in
/usr/include/linux/in.h, but that doesn't fix the compile errors. I can't
include "linux/in.h" directly as that'll cause all sorts of redefinition
errors with "netinet/in.h". I'm not sure what is supposed to include
"linux/in.h" for me. Including "netinet/in.h" doesn't fix it, as it
doesn't define IP_UNICAST_IF.
I ended up adding "#define IP_UNICAST_IF 50" to the top of "
src/resolve/resolved-dns-scope.c" and "src/resolve/resolved-dns-stream.c",
which is a little hackish, but at leasts gets it to compile.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20150423/9b8c443b/attachment.html>
More information about the systemd-devel
mailing list