Topics of interest:


FAQ: Building the Crosscompiler

[ home ] [ overview ] [ developers ] [ about escher ]


Here you can find information which might be useful during the development process.

Q:  I get the following error (or one like it...) when trying to compile buildroot on cygwin (note this example is taken from an arm build attempt):
install -d include/bits
make[1]: execvp: install: Permission denied
make[1]: *** [include/bits/uClibc_config.h] Error 127
make[1]: Leaving directory `/usr/local/crosscompile/buildroot_arm/toolchain_build_arm/uClibc'
make: *** [/usr/local/crosscompile/buildroot_arm/toolchain_build_arm/uClibc/.configured] Error 2

There are two solutions, both of which are hackish:

  • When calling make, issue the command like this:
  • $ make INSTALL=/usr/bin/install


    $ make INSTALL=`which install`

    The checkout script uses the latter of these two.

  • Edit the toolchain_build_$ARCH/uClibc/Rules.mak (or used the already modified in the previous link) to use INSTALL=/usr/bin/install. There is probably a way to do this via the configure.in file, I welcome any suggestions, which we can roll back in to the buildroot development tree.

Q:  The buildroot process seems to fail, and then if I type 'make' again, recovers. What's the deal?
A: Buildroot is a slick tool, but it doesn't have all of its dependency ducks in a row (my opinion), nor does it appropriately use configure to find things (cf the make INSTALL= ...). If you have specific instances, we can look at them to try to figure out what's going on. For the most part, I am happy just to get it build on cygwin. :) 

Q: What is up with libc-internal.h? Why is this file missing when compiling libstdc++ during gcc-3.4.X? I found it in build_$ARCH/toolchain_build_$ARCH/include, why can't the compiler find it?

That's a very good question, and I do not know the answer (in the best sense). I re-copy the file to the appropriate directory whenever it is needed. Thusfar, I have to do this twice (for example below, using the ARM build):

sprinkle@ransom /usr/local/crosscompile/buildroot_arm
$ cp toolchain_build_arm/uClibc/include/libc-internal.h toolchain_build_arm/gcc-3.4.2-final/arm-linux-uclibc/libstdc++-v3/include 

and again for the gcc for the target:

sprinkle@ransom /usr/local/crosscompile/buildroot_arm
$ cp toolchain_build_arm/uClibc/include/libc-internal.h build_arm/gcc-

It seems this problem may have been solved by now in the Subversion tree. We shall see!

Q:  When building my root, I can't get grep to build, it is missing io.h --- can I just fix the includes path?

I've spent a few hours on this, and I'm putting off a solution until later, since grep is okay to live without on the embedded device. This is due again (I think) to the buildroot tendency to not try its builds on cygwin. :)

My solution, then, is to rerun make menuconfig and under Package selection for target remove grep as a chosen deployment component. 

Q: Uh, do bad things happen when building make for the target?

Yep. Don't do that (for now...). It shouldn't hurt that much, since you have a crosscompiler. 

Known issues:

  1. After successfully building make, the build fails immediately when in the make directory, because the current directory version of make overrides /usr/bin/make


Last modified 8 March, 2006
To modify this page, use CVS.
©2002-2018 Chess