Здравствуйте мучаю SK-MNUC950. Пробую скомпилировать busybox-1.9.1, который идет в комплекте с платой, но что-то лыжи не едут...
Сделал как описанно в NUC900 Series MCU Linux BSP User's Manual:
1. make menuconfig
2. Load NUC900 as configure file
3. make
На последнем пункте оно и умирает:
~/BSP/nuc900bsp/applications/busybox-1.9.1$ make CROSS_COMPILE=arm-linux-gnu-
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/split-include
HOSTCC scripts/basic/docproc
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/kxgettext.o
HOSTCC scripts/kconfig/mconf.o
HOSTCC scripts/kconfig/zconf.tab.o
scripts/kconfig/lex.zconf.c:1609: warning: ‘input’ defined but not used
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf -s Config.in
#
# using defaults found in .config
#
SPLIT include/autoconf.h -> include/config/*
GEN include/bbconfigopts.h
HOSTCC applets/usage
GEN include/usage_compressed.h
HOSTCC applets/applet_tables
GEN include/applet_tables.h
CC applets/applets.o
In file included from /usr/arm-linux-gnu/include/bits/posix1_lim.h:153,
from /usr/arm-linux-gnu/include/limits.h:145,
from /usr/lib/gcc/arm-linux-gnu/4.2.4/include/limits.h:122,
from /usr/lib/gcc/arm-linux-gnu/4.2.4/include/syslimits.h:7,
from /usr/lib/gcc/arm-linux-gnu/4.2.4/include/limits.h:11,
from /usr/arm-linux-gnu/include/bits/socket.h:32,
from /usr/arm-linux-gnu/include/sys/socket.h:36,
from /usr/arm-linux-gnu/include/netinet/in.h:25,
from /usr/arm-linux-gnu/include/arpa/inet.h:23,
from include/platform.h:139,
from include/libbb.h:13,
from include/busybox.h:10,
from applets/applets.c:11:
/usr/arm-linux-gnu/include/bits/local_lim.h:36:26: error: linux/limits.h: Нет такого файла или каталога
In file included from /usr/arm-linux-gnu/include/sys/socket.h:36,
from /usr/arm-linux-gnu/include/netinet/in.h:25,
from /usr/arm-linux-gnu/include/arpa/inet.h:23,
from include/platform.h:139,
from include/libbb.h:13,
from include/busybox.h:10,
from applets/applets.c:11:
/usr/arm-linux-gnu/include/bits/socket.h:320:24: error: asm/socket.h: Нет такого файла или каталога
In file included from /usr/arm-linux-gnu/include/sys/ioctl.h:27,
from /usr/arm-linux-gnu/include/sys/mount.h:26,
from include/platform.h:305,
from include/libbb.h:13,
from include/busybox.h:10,
from applets/applets.c:11:
/usr/arm-linux-gnu/include/bits/ioctls.h:24:24: error: asm/ioctls.h: Нет такого файла или каталога
In file included from /usr/arm-linux-gnu/include/errno.h:36,
from include/libbb.h:17,
from include/busybox.h:10,
from applets/applets.c:11:
/usr/arm-linux-gnu/include/bits/errno.h:25:26: error: linux/errno.h: Нет такого файла или каталога
In file included from /usr/arm-linux-gnu/include/signal.h:333,
from include/libbb.h:23,
from include/busybox.h:10,
from applets/applets.c:11:
/usr/arm-linux-gnu/include/bits/sigcontext.h:28:29: error: asm/sigcontext.h: Нет такого файла или каталога
In file included from /usr/arm-linux-gnu/include/signal.h:353,
from include/libbb.h:23,
from include/busybox.h:10,
from applets/applets.c:11:
/usr/arm-linux-gnu/include/sys/ucontext.h:92: error: field ‘uc_mcontext’ has incomplete type
In file included from include/libbb.h:44,
from include/busybox.h:10,
from applets/applets.c:11:
/usr/arm-linux-gnu/include/sys/param.h:24:25: error: linux/param.h: Нет такого файла или каталога
applets/applets.c:15:2: warning: #warning Static linking against glibc produces buggy executables
applets/applets.c:16:2: warning: #warning (glibc does not cope well with ld --gc-sections).
applets/applets.c:17:2: warning: #warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
applets/applets.c:18:2: warning: #warning Note that glibc is unsuitable for static linking anyway.
applets/applets.c:19:2: warning: #warning If you still want to do it, remove -Wl,--gc-sections
applets/applets.c:20:2: warning: #warning from scripts/trylink and remove this warning.
applets/applets.c:21:2: error: #error Aborting compilation.
make[1]: *** [applets/applets.o] Ошибка 1
make: *** [applets] Ошибка 2
Имеется предроложение что не видит заголовков ядра. Хотя в /usr/include/linux все лежит.
В makefile вычитал
Файл есть:
ant@ant:~$ ls -l /usr/include/linux/limits.h
-rw-r--r-- 1 root root 874 Фев 10 15:33 /usr/include/linux/limits.h
ant@ant:~$ ls -l /usr/arm-linux-gnu/include/sys/param.h
-rw-r--r-- 1 root root 2266 Янв 5 2009 /usr/arm-linux-gnu/include/sys/param.h
Права на чтение тоже есть. Пробовал запускать make из под рута - тоже самое.
Путь указан в PATH.
ant@ant:~$ arm-linux-gnu-gcc
arm-linux-gnu-gcc: no input files
я, честно гря, не силен в кросскомпиляции, да и бизибокс мне не импонирует. что сделал:
в виртуальной машине с диска разыскал ../src/nuc900/nuc900bsp/applications/busybox-1.9.1 скопировал в отдельный каталог
туда же подсунул файл make_boobs с содержимым: #!/bin/sh
make ARCH=arm CROSS_COMPILE=/usr/local/arm_linux_4.2/bin/arm-none-linux-gnueabi-
make clean
./make_boobs
все собралось без грязной ругани :)
дальше ковырять не стал.. там надо указывать куда складываем дерево, как прописываем линки etc
не-а.. реально.. сам слегка удивился
виртуалка от Павла, сорцы его же
тупо скопировал из юзера user в test
и все как описал проделал, в чем подвох то?
один из законов Мерфи гласит - "если все собирается, то значит что-то неправильно.."
при всем этом у того же user в каталоге buildroot/uclibs лежит версия 1.14.3 - не собирается ни в какую..
что для доказательства надо? скриншот, мувик, шляпу съесть? :)
Проблема действительно в путях...
Попробовал откомпилировать вот это:
#include <linux/param.h>
int main (void)
{
volatile int r = 7;
return 5 + r;
}
Результат:
ant@ant:~/BSP$ arm-linux-gnu-gcc test.c
test.c:1:25: error: linux\param.h: Нет такого файла или каталога
При всем при этом с gcc, тот который 386, работает.
Сделал ссылку на заголовки линукса, дело продвинулось чуть дальше.
In file included from /usr/arm-linux-gnu/include/sys/socket.h:36,
from /usr/arm-linux-gnu/include/netinet/in.h:25,
from /usr/arm-linux-gnu/include/arpa/inet.h:23,
from include/platform.h:139,
from include/libbb.h:13,
from include/busybox.h:10,
from applets/applets.c:11:
/usr/arm-linux-gnu/include/bits/socket.h:320:24: error: asm/socket.h: Нет такого файла или каталога
Ссылку на asm я сделаю, но возникает вопрос - с каждым ядром так делать? Или во всех ядрах 2.6 заголовочные файлы одинаковы? Если так, то почему при установке пакета кроскомпилятора эти ссылки не сделались, кривой пакет?