--->--- .../arm-buildroot-linux-uclibcgnueabi-gcc -static -lintl quotastats.o common.o pot.o -o quotastats .../arm-buildroot-linux-uclibcgnueabi-gcc -static -lintl xqmstats.o common.o pot.o -o xqmstats quotastats.o: In function `get_proc_num': quotastats.c:(.text+0x58): undefined reference to `libintl_gettext' quotastats.o: In function `main': quotastats.c:(.text.startup+0x138): undefined reference to `libintl_gettext' quotastats.c:(.text.startup+0x1b4): undefined reference to `libintl_gettext' quotastats.c:(.text.startup+0x1c4): undefined reference to `libintl_gettext' quotastats.c:(.text.startup+0x228): undefined reference to `libintl_gettext' quotastats.o:quotastats.c:(.text.startup+0x238): more undefined references to `libintl_gettext' follow pot.o: In function `gettexton': pot.c:(.text+0x1c): undefined reference to `libintl_bindtextdomain' pot.c:(.text+0x28): undefined reference to `libintl_textdomain' collect2: error: ld returned 1 exit status make[2]: *** [quotastats] Error 1 make[2]: *** Waiting for unfinished jobs.... xqmstats.o: In function `main': xqmstats.c:(.text.startup+0x70): undefined reference to `libintl_gettext' xqmstats.c:(.text.startup+0x100): undefined reference to `libintl_gettext' xqmstats.c:(.text.startup+0x10c): undefined reference to `libintl_gettext' xqmstats.c:(.text.startup+0x11c): undefined reference to `libintl_gettext' xqmstats.c:(.text.startup+0x12c): undefined reference to `libintl_gettext' xqmstats.o:xqmstats.c:(.text.startup+0x13c): more undefined references to `libintl_gettext' follow --->--- The reason seems to be in improper location of "-lintl". Incase of static linkage it should be after (on left side) object files that call symbols of the library. In other words following command line will work: --->--- arm-buildroot-linux-uclibcgnueabi-gcc -static quotastats.o common.o pot.o -lintl -o quotastats --->--- In its turn "-lintl" is put in the beginning of command line because it's a part of LDFLAGS in quota's Makefile. And in "package/quota/quota.mk" we explicitly set it with "QUOTA_LDFLAGS += -lintl". So the only proper fix I may think of is modification of quota's Makefile.in so that libraries are appended in the end of link command separately from LDFLAGS or move LDFLAGS in the end.
Created attachment 5750 [details] Defconfig This defconfig could be used for reproduction of the issue with up-to-date master branch of Buildroot
Normally, a separate variable LDLIBS is used for that purpose. This variable is then included at the end of the link command line, unlike LDFLAGS. At least this is the case in the implicit make recipes. I would assume that autotools has a similar distinction.
Patch series sent at http://lists.busybox.net/pipermail/buildroot/2014-November/111618.html to fix this bug.
Patch applied as of http://git.buildroot.net/buildroot/commit/?id=06d310e7a172a3dc61e30a4e5937e4455f6d340b, bug fixed.