Small example fix for 1 - point build error: https://abf.io/build_lists/2561424 fix: https://abf.io/openmandriva/dnsmasq/commit/23d8c58c5eb0e859c2e690212f4f45cd938b11c7
2015-07-22 21:44 GMT+03:00 Bernhard Rosenkraenzer <[email protected]>: > Hi, > there's quite a few failures in the mass build with ld errors, looking > something like this: > > /usr/bin/ld: error: ctl.o:1:3: invalid character > /usr/bin/ld: error: ctl.o:1:3: syntax error, unexpected $end > /usr/bin/ld: error: ctl.o: not an object or archive > > The problem here is that the *.o files are LTO files rather than normal > object code, but the linker is invoked without LTO support. > > This is usually caused by one of three things: > > 1) Broken Makefile > Typically a developer thinking that it's not necessary to pass > optimization flags while linking, hardcoding something like > > xyz: $(OBJECTS) > $(CC) -o xyz $(OBJECTS) > > The fix for this is to make sure compiler flags get passed even while > linking, e.g. > > xyz: $(OBJECTS) > $(CC) $(CFLAGS) -o xyz $(OBJECTS) > > 2) Use of ./configure instead of %configure etc. > The %configure macro takes care of passing LDFLAGS and friends correctly > -- they aren't set if ./configure is used manually or the likes. > > 3) Libtool breakage > Libtool is essentially a set of convoluted wrappers around compilers that > tends to strip compiler flags off when linking even if they're passed > correctly. > This is fixed in the current version of libtool, but some stuff bundles > old versions of libtool and forces their use. > > Usually the best fix is to make sure the current (system) version of > libtool is used, usually by calling libtoolize --force and regenerating > autoconf scripts. Typically > > libtoolize --force > automake -a > autoconf > > fixes this (We already do this in the %configure macro, but only if we can > detect libtool usage, which requires following standards in naming files > and using LT_INIT etc.) > > If something hardcodes behavior of ancient libtool etc. and can't be > updated to use current libtool with reasonable effort, the bundled libtool > must be fixed to pass relevant compiler flags to the linker instead of > dropping them during linkage. > > Even old versions of libtool typically know a set of flags that need to be > passed to the linker unmodified (but the relevant ones aren't passed). > Flags that were passed to the linker from the start unmodified include > -64, -mips[0-9], -xarch=* -- so look for the case statement that catches > them (usually > -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=* > 9 > and add the relevant flags there, e.g. > -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-f*|-O* > > This should fix pretty much all the linker related errors. > > ttyl > bero > _______________________________________________ > OM-Cooker mailing list > [email protected] > http://ml.openmandriva.org/listinfo.cgi/om-cooker-openmandriva.org >
_______________________________________________ OM-Cooker mailing list [email protected] http://ml.openmandriva.org/listinfo.cgi/om-cooker-openmandriva.org
