кросс-компиляция u-boot, фатальная ошибка: stdint.h

Здесь возникает странная ошибка при попытке перекрестной компиляции для ARM в Linux Mint. Я использовал:

make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_config
make ARCH=arm CROSS_COMPILE=${CC}


    make[1]: Leaving directory `/root/bbb/u-boot/arch/arm/cpu/armv7'
    make[1]: Entering directory `/root/bbb/u-boot/board/ti/am335x'
    make[1]: Nothing to be done for `_depend'.
    make[1]: Leaving directory `/root/bbb/u-boot/board/ti/am335x'
    make -C tools all
    make[1]: Entering directory `/root/bbb/u-boot/tools'
    gcc -g -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -include /root/bbb/u-boot/include/libfdt_env.h -idirafter /root/bbb/u-boot/include -idirafter /root/bbb/u-boot/include2 -idirafter /root/bbb/u-boot/include -I /root/bbb/u-boot/lib/libfdt -I /root/bbb/u-boot/tools -DCONFIG_SYS_TEXT_BASE=0x80800000 -DUSE_HOSTCC -D__KERNEL_STRICT_NAMES -D_GNU_SOURCE -pedantic -c -o crc32.o /root/bbb/u-boot/lib/crc32.c
    In file included from /root/bbb/u-boot/include/compiler.h:19:0,
                     from /root/bbb/u-boot/include/libfdt_env.h:12,
                     from <command-line>:0:
    /usr/lib/gcc/i686-linux-gnu/4.8/include/stdint.h:9:26: fatal error: stdint.h: No such file or directory
     # include_next <stdint.h>
                              ^
    compilation terminated.

Я также экспортировал ARCH и CROSS_COMPILE, но я скомпилировал u_boot без прошлой недели на другой машине без проблем. Кажется, это проблема кросс-компилятора, но это тот же Linaro, не заархивированный в каком-то месте.

Есть идеи? Спасибо большое.


person user1797147    schedule 03.01.2014    source источник
comment
Вы экспортировали CC? Ваша команда имеет CROSS_COMPILE=${CC}, которая будет наступать на предыдущий экспорт CROSS_COMPILE.   -  person Joe Kul    schedule 03.01.2014
comment
Попробуйте распечатать CC и посмотрите. Глядя на эту строку /usr/lib/gcc/i686-linux-gnu/4.8/include/stdint.h:9:26, я не думаю, что вы используете правильный компилятор... ? Кроме того, я рекомендую вам отредактировать файл .bashrc (расположенный в ~/), чтобы вам не нужно было переопределять переменную CROSS_COMPILE каждый раз, когда вы хотите скомпилировать.   -  person Cyril Fougeray    schedule 03.01.2014


Ответы (2)


Почему ваше исходное дерево u-boot находится в /root/? Вы вошли в систему как root при выполнении make? Вы уверены, что хотите скомпилировать u-boot как root? потому что вам не нужно.

Когда я пытался понять, что здесь происходит, я узнал несколько строк здесь http://eewiki.net/display/linuxonarm/BeagleBone#BeagleBone-ARMCrossCompiler:GCC Надеюсь, вы поняли каждую строку, которую вы выполнили, потому что вам нужно выполнить их одну за другой, чтобы компиляция заработала. Что касается вики, попробуйте так:

export CROSS_COMPILE=/path/to/the/directory/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-

Тогда вы можете просто:

make ARCH=arm distclean
make ARCH=arm am335x_evm_config
make ARCH=arm 

Обратите внимание, что вам придется экспортировать переменную CROSS_COMPILE каждый раз, когда вы открываете новую консоль.

Надеюсь, я помог вам.

person Cyril Fougeray    schedule 03.01.2014

Попробуйте установить libc6-dev со всеми зависимостями. Это решило проблему для меня.

$ sudo apt-get install libc6-dev
person Rahul Chawre    schedule 17.07.2015