undefined reference to `bb_makedev'
Denis Vlasenko
vda.linux at googlemail.com
Sat Dec 9 18:34:43 PST 2006
On Sunday 03 December 2006 16:32, Yuwen Dai wrote:
> Dear all,
>
> When I built the current svn source, I got this error:
>
> LINK busybox_unstripped
> /usr/bin/ld: Warning: gc-sections option ignored
Hmm... What is your arch? Version of gcc and ld?
> archival/libunarchive/lib.a(get_header_cpio.o)(.text.get_header_cpio+0x321):
> In function `get_header_cpio':
> : undefined reference to `bb_makedev'
>
>
> I saw bb_makedev is defined in libbb/makedev.c surrounded by #ifdef
> __GLIBC__, should I define this macro?
No. You should investigate how come get_header_cpio.c
managed to reference bb_makedev here:
file_header->device = makedev(major, minor);
Because as far as I can see, makedev is mapped to bb_makedev
AND bb_makedev is defined under the very same #ifdef:
include/libbb.h:
#ifdef __GLIBC__
/* At least glibc has horrendously large inline for this, so wrap it */
extern unsigned long long bb_makedev(unsigned int major, unsigned int minor);
#undef makedev
#define makedev(a,b) bb_makedev(a,b)
#endif
libbb/makedev.c:
#ifdef __GLIBC__
/* At least glibc has horrendously large inline for this, so wrap it */
/* uclibc people please check - do we need "&& !__UCLIBC__" above? */
unsigned long long bb_makedev(unsigned int major, unsigned int minor)
{
return makedev(major, minor);
}
#endif
So, how come __GLIBC__ was defined in get_header_cpio.c
and _wasn't_ defined in makedev.c?? Or maybe makedev.o is not linked in?
--
vda
More information about the busybox
mailing list