Reputation: 782
I've downloaded Linux kernel source from kernel.org to cross-compile glibc onto aarch64 Linux (emulated by QEMU). However, when I run:
[teo.samarzija@teos-acer-laptop glibc-2.31-build]$ ../glibc-2.31/configure --with-headers=/home/teo.samarzija/linux-5.7.6/include --with-binutils=/home/teo.samarzija/arm-gcc/bin --prefix=/home/teo.samarzija/arm-gcc --build=x86_64-pc-linux --host=aarch64-none-linux-gnu CC=aarch64-none-linux-gnu-gcc
I get this error:
checking installed Linux kernel header files... missing or too old!
configure: error: GNU libc requires kernel header files from
Linux 3.2.0 or later to be installed before configuring.
The kernel header files are found usually in /usr/include/asm and
/usr/include/linux; make sure these directories use files from
Linux 3.2.0 or later. This check uses <linux/version.h>, so
make sure that file was built correctly when installing the kernel header
files. To use kernel headers not from /usr/include/linux, use the
configure option --with-headers.
Any idea what I am doing wrong?
Upvotes: 0
Views: 5000
Reputation: 33727
--with-headers=/home/teo.samarzija/linux-5.7.6/include
This looks like a checked-out kernel tree. You need to install the kernel tree first and specify that location, using a command like this:
make -C /home/teo.samarzija/linux-5.7.6 ARCH=arm64 \
INSTALL_HDR_PATH=/home/teo.samarzija/linux-5.7.6-installed/usr \
headers_install
(You still have to set CC
et al. appropriate to pick up the cross-compiler.)
And the use --with-headers=/home/teo.samarzija/linux-5.7.6-installed/usr/include
.
Upvotes: 3
Reputation: 50
You can use your host configure binary by installing auto tools package or similar for your Linux. Try with the CFLAGS="-I /home/teo.samarzija/linux-5.7.6/include"
Upvotes: 0