<tt><font size=2>Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
wrote on 04/21/2015 01:51:29 PM:<br>
> On Tue, Apr 21, 2015 at 08:39:35AM -0700, Aaron_Wright@selinc.com
wrote:<br>
> > I've been getting a few problems building systemd with "--enable-resolved<br>
> > ". Any help would be very welcomed. I don't have any problems
when <br>
> > compiling with "--disable-resolved".<br>
> > <br>
> > The first problem I got was this:<br>
> > <br>
> >   CCLD   libnss_resolve.la<br>
> > libsystemd_internal_la-bus-message.o (symbol from plugin): warning:
memset <br>
> > used with constant zero length parameter; this could be due to
transposed <br>
> > parameters<br>
> > /tmp/cc03x1nN.ltrans6.ltrans.o: In function `bus_error_name_to_errno.4725<br>
> > ':<br>
> > cc03x1nN.ltrans6.o:(.text+0x12bb): undefined reference to <br>
> > `__stop_BUS_ERROR_MAP'<br>
> > cc03x1nN.ltrans6.o:(.text+0x12c2): undefined reference to <br>
> > `__start_BUS_ERROR_MAP'<br>
> > collect2: ld returned 1 exit status<br>
> > <br>
> > I got around this be removing "-flto" from "OUR_CFLAGS"
in the Makefile. <br>
> > How is that change going to impact systemd? Is there a better
way to work <br>
> > around this problem?<br>
> Afaik nobody has measured that. It will certainly make your compilation<br>
> times much shorter :)</font></tt>
<br>
<br><tt><font size=2>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.</font></tt>
<br><tt><font size=2><br>
> <br>
> > After I got pass the first error, I now get this:<br>
> > <br>
> >   CC     src/resolve/resolved-dns-cache.o<br>
> > src/resolve/resolved-dns-scope.c: In function ?dns_scope_tcp_socket?:<br>
> > src/resolve/resolved-dns-scope.c:260:56: error: ?IP_UNICAST_IF?
undeclared <br>
> > (first use in this function)<br>
> > src/resolve/resolved-dns-scope.c:260:56: note: each undeclared
identifier <br>
> > is reported only once for each function it appears in<br>
> It was in kernel 3.4. What kernel headers are you using?<br>
> <br>
> Zbyszek</font></tt>
<br>
<br><tt><font size=2>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.</font></tt>
<br>
<br><tt><font size=2>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.<br>
</font></tt>