This is a bug that has been repeatedly reported, and patches submitted by others, for our favorite upstream vendor, but they've closed all the bug reports and never actually applied the fix. I noticed it when trying to check out new enterprise linux 6.3 packages on my favorite Scientific Linux box and "mock" build environment. (Check out Bug #641411 on our favorite upstream vendor's bugilla for more history.) Basically, the grub build environment on x86_64 is doing a static, 32-bit build of the binaries, for a whole set of reasons. That's fine, but there are symlinks in the 32-bit, static, cross-compilation toolchain that are not provided on x86_64 environments unless you install "glibc-static.i686", and grub has no dependency on that, so it's only there by happnstance when you're building grub. My patch is below, and will hopefully be useful to the SL 6.3 release. To actuall install it, I'd also suggest incrementing whatever your "Release:" field is by adding ".1" to it, just to avoid version confusion. grub-0.97-77.el6 would then become grub-0.97-77.1.el6. Also note that, unlike most patch authors, I *only apply the new dependency if you need it*. That prevents adventures if you're building on an ARM or other architecture that doesn't have the weird split between "/lib" and "/lib64" for both 32-bit and 64-bit environments on the same host.. And note that the structure of this patch applies to other components with the "c compiler cannot create executables" error. $ diff -u grub* --- grub-broken-glibc-static.spec 2012-02-29 11:07:21.000000000 -0500 +++ grub.spec 2012-07-07 13:42:26.215803712 -0400 @@ -11,6 +11,10 @@ BuildRequires: autoconf /usr/lib/crt1.o automake BuildRequires: gnu-efi >= 3.0e-9 BuildRequires: glibc-static +# Added for 32 bit libc_s.so 32 bit dependency on x86_64 +%if %{_arch} == x86_64 +BuildRequires: glibc-static.i686 +%endif Requires(post): /sbin/install-info Requires(preun): /sbin/install-info Requires: mktemp