This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

stdarg.h missing compiling a kernel module



I try to cross-compile a kernel module for sitara ARM (after compiling linux and everything in the sdk root).

sitara sdk is installed in my ubuntu at:

/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/

The module source is in 

/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/AWB/

I have set the environment as follows:

======================

PATH=${PATH}:/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/libexec/gcc/arm-linux-gnueabihf/4.7.3/
CROSS_COMPILE=/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/arm-linux-gnueabihf/bin/
KERNELDIR=../board-support/linux-3.2.0-psp04.06.00.11
=======================

Then I get an error while trying to make the module with:

======================

make ARCH=arm -C $KERNELDIR M=$PWD modules
make: Entering directory `/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/board-support/linux-3.2.0-psp04.06.00.11'
  CC [M]  /home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/AWB/AWB.o
In file included from /home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/AWB/AWB.c:7:0:
include/linux/kernel.h:12:20: fatal error: stdarg.h: No such file or directory
compilation terminated.
make[1]: *** [/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/AWB/AWB.o] Error 1
make: *** [_module_/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/AWB] Error 2
make: Leaving directory `/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/board-support/linux-3.2.0-psp04.06.00.11'
=======================

I see a stdarg.h in the cross-compiler folders. It does not change anything to link it symbolically in /include/

Adding its paths in EXTRA_CFLAGS in the Makefile:

EXTRA_CFLAGS += -I/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin/../lib/gcc/arm-linux-gnueabihf/4.7.3/include/

leads to another message:

==========================

make ARCH=arm -C $KERNELDIR M=$PWD modules
make: Entering directory `/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/board-support/linux-3.2.0-psp04.06.00.11'
  CC [M]  /home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/AWB/AWB.o
as: unrecognized option '-EL'
make[1]: *** [/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/AWB/AWB.o] Error 1
make: *** [_module_/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/AWB] Error 2
make: Leaving directory `/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/board-support/linux-3.2.0-psp04.06.00.11'
============

Any idea (thanks)?

  • Hi,

    Once you have exported the path to your cross-compile toolchain, you need to export CROSS_COMPILE as the prefix of the toolchain you are using, not the path to it. Example:

    export CROSS_COMPILE=arm-linux-gnueabihf-

    Best regards,
    Miroslav

  • Thank you,

    but then I get the error:

    make ARCH=arm -C $KERNELDIR M=$PWD modules
    make: arm-linux-gnueabihf-gcc: Command not found
    make: Entering directory `/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/board-support/linux-3.2.0-psp04.06.00.11'
      CC [M]  /home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/AWB/AWB.o
    /bin/sh: 1: arm-linux-gnueabihf-gcc: not found
    make[1]: *** [/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/AWB/AWB.o] Error 127
    make: *** [_module_/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/AWB] Error 2
    make: Leaving directory `/home/msilaghi/ti-sdk-am335x-evm-06.00.00.00/board-support/linux-3.2.0-psp04.06.00.11'

  • Your $PATH is not correct.

    The toolchain is located inside <sdk_dir>/linux-devkit/sysroots/i686-arago-linux/usr/bin/

    Best regards,
    Miroslav