Last year I put together a script that did a combined kernel header export from a pristine kernel tarball, then a build of klibc from a pristine klibc tarball. One of the intentions for this was to be independent of the host kernel and its headers, so I could build klibc for other targets of the same architecture. I even did this for a wide range of klibc and kernel version combinations to see what would work and what would not. Some did not, but a lot did work. But that was only doing the compile. I was not doing the install. I was thinking I'd just extract pieces as needed. And the need for klibc was shelved for the time. But recently a new need for klibc came up. So I pulled out the script and verified it was still working even on newer versions. Still is. So I decided to go ahead and add the install step, targeting a staging area instead of the host itself (to eventually transfer to a target host). But this is where things failed. And almost immediately, it's confusing. Here are some relevant lines of the output: ================================================================ BEGIN INSTALL headers + man pages to /home/phil/build-klibc-1.5.25-and-linux-2.6.38.4/klibc-1.5.25-install/usr/lib/klibc make[2]: *** No rule to make target `headers_install'. Stop. make[1]: *** [header] Error 2 make: *** [install] Error 2 ================================================================ END I scanned through all the Makefiles and found none with "headers_install". I did find one script that was invoking make with "headers_install" as a target. The above looks like it is 2 levels deep in Makefiles, too. The only place I can find "headers_install" as a make target is in the linux kernel. Could it be trying to invoke a kernel Makefile to install kernel headers along with the klibc headers? The script does the "make install" in the same directory as the previous "make" (which succeeded). I also tried doing "make install" without doing "make" before it, and that failed the same way. Another thing I noticed is a lot of the files are being recompiled again as part of "make install". Could this be indicating some wrong context somewhere? The actual commands executed, as shown in the logs below, are these: 16:38:36 EXECUTING: make KLIBCKERNELSRC=/home/phil/build-klibc-1.5.25-and-linux-2.6.38.4/linux-2.6.38.4-headers 16:39:13 EXECUTING: make KLIBCKERNELSRC=/home/phil/build-klibc-1.5.25-and-linux-2.6.38.4/linux-2.6.38.4-headers INSTALLROOT=/home/phil/build-klibc-1.5.25-and-linux-2.6.38.4/klibc-1.5.25-install install The full log files (one run in 32 bit and one run in 64 bit) are here, along with the script now modified to also do the install step if the "install" environment variable is set to "yes": http://phil.ipal.org/klibc/20110831-163727-023873-build-klibc-1.5.25-and-linux-2.6.38.4-32bit.log http://phil.ipal.org/klibc/20110831-163730-028338-build-klibc-1.5.25-and-linux-2.6.38.4-64bit.log http://phil.ipal.org/klibc/compile-klibc-linux These are also available from that directory in BZIP2 compressed form if you prefer. -- Phil Howard, KA9WGN kunnskaperen at gmail.com