Linux Kernel Compiling Error

I receive an error when compiling the toradex_4.1-2.0.x-imx branch for the Colibri iMX7. Here are the steps to hopefully reproduce the error.

Clean clone from
git clone -b toradex_4.1-2.0.x-imx git://git.toradex.com/linux-toradex.git

make colibri_imx7_defconfig
make -j3 zImage 2>&1 | tee build.log

Here is the following output from kernel compiling.

Notably,

arm-angstrom-linux-gnueabi-objcopy: arch/arm/vdso/vdso.so: Not enough room for program headers, try linking with -N
arm-angstrom-linux-gnueabi-objcopy:arch/arm/vdso/vdso.so[.hash]: Bad value
arch/arm/vdso/Makefile:45: recipe for target ‘arch/arm/vdso/vdso.so’ failed
make1: *** [arch/arm/vdso/vdso.so] Error 1
Makefile:948: recipe for target ‘arch/arm/vdso’ failed
make: *** [arch/arm/vdso] Error 2

A similar question was asked here

My Environment variables are set as recommended from the similar question.

echo $PATH

/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/qt5:/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin:/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/sbin:/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/bin:/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/sbin:/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/…/x86_64-angstromsdk-linux/bin:/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi:/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-uclibc:/usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-musl:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

echo $CROSS_COMPILE

arm-angstrom-linux-gnueabi-

I also follow the advice to directly force the use of the bfd linker.

make -j3 zImage LD=${CROSS_COMPILE}ld.bfd | tee build.log

With the same result.

If I build using openembedded it builds clean and runs as expected on the Colibri iMX7D

Any help would be appreciated.

Hi

I guess when compiling the OE toolchain which you seem to be using is not picking up that it should use the bfd linker even when giving the LD=${CROSS_COMPILE}ld.bfd.

You could try either one of:

a) change the default used linker, i.e.

sudo rm /usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld
sudo cp /usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld.bfd /usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/bin/arm-angstrom-linux-gnueabi/arm-angstrom-linux-gnueabi-ld

b)
Use one of the binary toolchains instead of the OE built one for the kernel.

If that doesn’t help:
What OE version did you use to built the SDK?
What cross compiler version did result?
${CROSS_COMPILE}gcc --version

Max

Thanks, a) worked for me.