repairman (Guest)
Цитата
Вот в этом и дело - нормальный тулчайн работает как бы ему не мешали внешние утилиты :) И для нормального тулчайна кроме указания пути и префикса ничего не нужно указывать в буилдруте.
Поправил, не хватало опции --with-local-prefix... теперь buildroot находит и копирует sys-root тулчейна сам без посторонней помощи... mtd cтабильно не собирается (как и любым другим, если STAGING_DIR бьюлдрут не показывает на sys-root тулчейна)...
Для gcc обеих стадий изменились опции кофигурации:
Код
--with-sysroot=$(PREFIX)/$(TARGET)/sys-root
--with-local-prefix=$(PREFIX)/$(TARGET)/sys-root
В общем теперь "правильный" компилятор...
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Отредактированно repairman 29.01.2009 г. в 23:16:49
repairman (Guest)
Мда... не без геммороя... появилась жесткая привязка к месту сборки... Это уж совсем мне не нравится....
Тогда как задать sysroot и local-prefix с относительными путями ?
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Отредактированно repairman 29.01.2009 г. в 23:23:39
sasamy (Guest)
Цитата Еще один вопрос возникает - как хранить логи ? Сейчас они пишутся в ramdisk, который при ребуте рождается заново... А вот админу нужно знать почему девайс пропадал или перегружался без причины... и КАК это сделать ?
Сделать отдельный небольншой раздел mtd с jffs на dataflash и монтировать его в /var/log. Естественно если система работает 24/7 предусмотреть мониторинг размера логов и обрезание старых логов чтобы было куда писать новые.
sasamy (Guest)
Цитата Мда... не без геммороя... появилась жесткая привязка к месту сборки... Это уж совсем мне не нравится....
Тогда как задать sysroot и local-prefix с относительными путями ?
Имхо это тупиковый путь - тратить время на создание инструментов. crosstool-ng создает прекрасно работающий тулчайн, если нужен eabi - лучше использовать Codesourcery.
sasamy (Guest)
Кстати - проблема со сборкой mtd решается исправление одной строчки в правиле сборки этого пакета в buildroot:
Цитата bash-3.2# pwd
/home/sasa/sam9work/buildroot-2009.02-rc2/package/mtd/mtd-utils
bash-3.2# diff -Naur mtd.mk_orig mtd.mk
--- mtd.mk_orig 2009-01-31 18:16:28.000000000 +0000
+++ mtd.mk 2009-01-31 18:17:20.000000000 +0000
@@ -97,7 +97,7 @@
$(MTD_BUILD_TARGETS): $(MTD_DIR)/.unpacked
mkdir -p $(TARGET_DIR)/usr/sbin
$(MAKE) CFLAGS="-I. -I./include -I$(LINUX_HEADERS_DIR)/include -I$(STAGING_DIR)/usr/include $(TARGET_CFLAGS)"
- LDFLAGS="$(TARGET_LDFLAGS)"
+ LDFLAGS="--sysroot=$(STAGING_DIR)"
BUILDDIR=$(MTD_DIR)
CROSS=$(TARGET_CROSS) CC=$(TARGET_CC) LINUXDIR=$(LINUX26_DIR) WITHOUT_XATTR=1 -C $(MTD_DIR)
repairman (Guest)
crosstool-ng создает НЕ перемещаемый тулчейн из-за ключа --with-local-prefix...
Стоит его переместить в другой директорий и больше ничего не собирается... собственных инклудов в упор не видит... а это НЕ правильно...:
Код
/usr/bin/make -j2 CC=/home/repman/x-tools_/arm-unknown-linux-uclibc/bin/arm-unknown-linux-uclibc-gcc CROSS_COMPILE="/home/repman/x-tools_/arm-unknown-linux-uclibc/bin/arm-unknown-linux-uclibc-"
CROSS="/home/repman/x-tools_/arm-unknown-linux-uclibc/bin/arm-unknown-linux-uclibc-" PREFIX="/home/repman/Build/buildroot/project_build_arm/at91sam9260dfc/root"
ARCH=arm
EXTRA_CFLAGS="-Os -I/home/repman/Build/buildroot/build_arm/staging_dir/include -I/home/repman/Build/buildroot/build_arm/staging_dir/usr/include -I/home/repman/x-tools_/arm-unknown-linux-uclibc/arm-unknown-linux-uclibc/include --sysroot /home/repman/Build/buildroot/build_arm/staging_dir/" -C /home/repman/Build/buildroot/project_build_arm/at91sam9260dfc/busybox-1.13.2
make[1]: Entering directory `/home/repman/Build/buildroot/project_build_arm/at91sam9260dfc/busybox-1.13.2'
DOC busybox.pod
SPLIT include/autoconf.h -> include/config/*
GEN include/bbconfigopts.h
DOC BusyBox.txt
DOC BusyBox.1
HOSTCC applets/usage
HOSTCC applets/applet_tables
LD archival/built-in.o
CC archival/ar.o
In file included from include/libbb.h:13,
from archival/ar.c:16:
include/platform.h:120:23: error: byteswap.h: No such file or directory
include/platform.h:121:21: error: endian.h: No such file or directory
include/platform.h:127:7: warning: "__BYTE_ORDER" is not defined
include/platform.h:127:23: warning: "__BIG_ENDIAN" is not defined
include/platform.h:166:24: error: arpa/inet.h: No such file or directory
include/platform.h:215:5: warning: "__BIG_ENDIAN__" is not defined
include/platform.h:326:23: error: sys/mount.h: No such file or directory
In file included from archival/ar.c:16:
include/libbb.h:15:19: error: ctype.h: No such file or directory
include/libbb.h:16:20: error: dirent.h: No such file or directory
include/libbb.h:17:19: error: errno.h: No such file or directory
include/libbb.h:18:19: error: fcntl.h: No such file or directory
include/libbb.h:19:22: error: inttypes.h: No such file or directory
include/libbb.h:20:19: error: netdb.h: No such file or directory
include/libbb.h:21:20: error: setjmp.h: No such file or directory
include/libbb.h:22:20: error: signal.h: No such file or directory
include/libbb.h:23:19: error: stdio.h: No such file or directory
include/libbb.h:24:20: error: stdlib.h: No such file or directory
include/libbb.h:27:20: error: string.h: No such file or directory
..... и т.д.
Кстати размер rootfs получается несколько больше, чем при сборке моим...
Понятно, что все меняется и настраивается, но то, что НУЖНО без приложения мозгов, по-легкому, получить не выходит...
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Отредактированно repairman 02.02.2009 г. в 11:51:17
sasamy (Guest)
Цитата crosstool-ng создает НЕ перемещаемый тулчейн из-за ключа --with-local-prefix...
Стоит его переместить в другой директорий и больше ничего не собирается... собственных инклудов в упор не видит... а это НЕ правильно...:
Ничего подобного у себя - НЕ наблюдаю. Переместил из /root/x-tools в /usr и прописал путь в PATH до бинарников - все прекрасно работает как с duildroot так и с обственными программами и с ядром. Размер бинарника зависит в первую очередь от самомго gcc верней от версии - я давно питаю симпатию в этом плане к версии 4.2.4. Никаких усилий и шаманства я не делал - просто выставил галочки в конфигураторе и запустил сборку.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Отредактированно sasamy 02.02.2009 г. в 12:50:48
AntonKr (Guest)
2sasamy
Очень помогают все Ваши (и repairman-a) наработки в изучении как самого арма, так и линукса. Все замечательно собирается и работает (ядра, rootfs и т.д.). Осталась только одна проблемка с тулчейном - никак не хочет собираться, все перепробовал. Не могли бы Вы поделиться конфигом для crosstool-ng? Работаю в линуксе под VMware с авторского диска.
Автору
Да и вообще есть предложение все необходимые файлы (конфиги и патчи), фак по сборке,загрузке ядра, сборки корневой системы со всеми необходимыми модулями, собрать в одном месте. Так же, есть предложение, делиться (по возможности) своими наработками с описанием хитрости компиляции и ссылками на исходники (т.е. создать специальную тему только с информацией).
Да и спасибо вам за данную конференцию - очень облегчает изучение :).
repairman (Guest)
Собирается... без загрузки исходников ~15 минут...
Код
...
[INFO ] Build completed at 20090203.105815
[INFO ] (elapsed: 15:10.03)
[INFO ] Finishing installation (may take a few seconds)...
Полученный gcc:
Код
[repman@repairman bin]$ ./arm-unknown-linux-uclibc-gcc -v
Using built-in specs.
Target: arm-unknown-linux-uclibc
Configured with: /home/repman/Build/ct-ng-1.3.2/bin/targets/src/gcc-4.2.4/configure --build=i386-build_asplinux-linux-gnu --host=i386-build_asplinux-linux-gnu --target=arm-unknown-linux-uclibc --prefix=/home/repman/x-tools/arm-unknown-linux-uclibc --with-sysroot=/home/repman/x-tools/arm-unknown-linux-uclibc/arm-unknown-linux-uclibc/sys-root --enable-languages=c,c++ --disable-multilib --with-arch=armv5te --with-cpu=arm926ej-s --with-tune=arm926ej-s --enable-__cxa_atexit --with-local-prefix=/home/repman/x-tools/arm-unknown-linux-uclibc/arm-unknown-linux-uclibc/sys-root --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99 --enable-long-long --enable-target-optspace
Thread model: posix
gcc version 4.2.4
.config
Код
#
# Automatically generated make config: don't edit
# crosstool-NG version: 1.3.2
# Tue Feb 3 10:32:22 2009
#
#
# Paths and misc options
#
#
# crosstool-NG behavior
#
# CT_OBSOLETE is not set
# CT_EXPERIMENTAL is not set
# CT_DEBUG_CT is not set
#
# Paths
#
CT_LOCAL_TARBALLS_DIR="${HOME}/src"
CT_SAVE_TARBALLS=y
CT_WORK_DIR="${CT_TOP_DIR}/targets"
CT_PREFIX_DIR="${HOME}/x-tools/${CT_TARGET}"
CT_INSTALL_DIR="${CT_PREFIX_DIR}"
# CT_CUSTOM_PATCH is not set
CT_REMOVE_DOCS=y
CT_INSTALL_DIR_RO=y
#
# Downloading
#
# CT_FORCE_DOWNLOAD is not set
# CT_USE_PROXY is not set
CT_PROXY_TYPE="none"
CT_USE_MIRROR=y
# CT_PREFER_MIRROR is not set
CT_MIRROR_HTTP=y
# CT_MIRROR_FTP is not set
CT_MIRROR_SCHEME="http"
CT_MIRROR_HOSTNAME="ymorin.is-a-geek.org"
CT_MIRROR_BASE="/mirrors"
CT_CONNECT_TIMEOUT=10
# CT_ONLY_DOWNLOAD is not set
#
# Extracting
#
# CT_FORCE_EXTRACT is not set
CT_OVERIDE_CONFIG_GUESS_SUB=y
# CT_ONLY_EXTRACT is not set
#
# Build behavior
#
CT_PARALLEL_JOBS=1
CT_LOAD=0
CT_NICE=0
CT_USE_PIPES=y
# CT_CONFIG_SHELL_ASH is not set
#
# Logging
#
# CT_LOG_ERROR is not set
# CT_LOG_WARN is not set
# CT_LOG_INFO is not set
CT_LOG_EXTRA=y
# CT_LOG_DEBUG is not set
# CT_LOG_ALL is not set
CT_LOG_LEVEL_MAX="EXTRA"
# CT_LOG_SEE_TOOLS_WARN is not set
CT_LOG_PROGRESS_BAR=y
CT_LOG_TO_FILE=y
CT_LOG_FILE_COMPRESS=y
#
# Target options
#
CT_ARCH="arm"
# CT_ARCH_64 is not set
CT_ARCH_SUPPORT_ARCH=y
CT_ARCH_SUPPORT_ABI=y
CT_ARCH_SUPPORT_CPU=y
CT_ARCH_SUPPORT_TUNE=y
CT_ARCH_SUPPORT_FPU=y
CT_ARCH_SUPPORTS_BOTH_ENDIAN=y
# CT_ARCH_DEFAULT_BE is not set
CT_ARCH_DEFAULT_LE=y
CT_ARCH_ARCH="armv5te"
CT_ARCH_ABI=""
CT_ARCH_CPU="arm926ej-s"
CT_ARCH_TUNE="arm926ej-s"
CT_ARCH_FPU=""
# CT_ARCH_BE is not set
CT_ARCH_LE=y
CT_ARCH_FLOAT_HW=y
# CT_ARCH_FLOAT_SW is not set
CT_TARGET_CFLAGS=""
CT_TARGET_LDFLAGS=""
#
# General target options
#
# CT_ARCH_alpha is not set
CT_ARCH_arm=y
# CT_ARCH_ia64 is not set
# CT_ARCH_mips is not set
# CT_ARCH_powerpc is not set
# CT_ARCH_sh is not set
# CT_ARCH_x86_64 is not set
# CT_ARCH_x86 is not set
# CT_ARCH_ARM_EABI is not set
CT_ARCH_ARM_ABI_OK=y
#
# Target optimisations
#
#
# Toolchain options
#
#
# General toolchain options
#
CT_USE_SYSROOT=y
CT_SHARED_LIBS=y
CT_TARGET_VENDOR="unknown"
CT_TARGET_ALIAS_SED_EXPR=""
CT_TARGET_ALIAS=""
#
# Toolchain type
#
# CT_NATIVE is not set
CT_CROSS=y
# CT_CROSS_NATIVE is not set
# CT_CANADIAN is not set
CT_TOOLCHAIN_TYPE="cross"
#
# Build system
#
CT_BUILD=""
CT_BUILD_PREFIX=""
CT_BUILD_SUFFIX=""
#
# Operating System
#
# CT_BARE_METAL is not set
CT_KERNEL="linux"
CT_KERNEL_VERSION="2.6.26.8"
# CT_KERNEL_bare_metal is not set
CT_KERNEL_linux=y
CT_KERNEL_LINUX_INSTALL=y
CT_KERNEL_LINUX_INSTALL_CHECK=y
# CT_KERNEL_V_2_6_18_8 is not set
# CT_KERNEL_V_2_6_19_7 is not set
# CT_KERNEL_V_2_6_20_21 is not set
# CT_KERNEL_V_2_6_21_7 is not set
# CT_KERNEL_V_2_6_22_19 is not set
# CT_KERNEL_V_2_6_23_17 is not set
# CT_KERNEL_V_2_6_24_7 is not set
# CT_KERNEL_V_2_6_25_20 is not set
# CT_KERNEL_V_2_6_26 is not set
# CT_KERNEL_V_2_6_26_1 is not set
# CT_KERNEL_V_2_6_26_2 is not set
# CT_KERNEL_V_2_6_26_3 is not set
# CT_KERNEL_V_2_6_26_4 is not set
# CT_KERNEL_V_2_6_26_5 is not set
# CT_KERNEL_V_2_6_26_6 is not set
# CT_KERNEL_V_2_6_26_7 is not set
CT_KERNEL_V_2_6_26_8=y
# CT_KERNEL_V_2_6_27 is not set
# CT_KERNEL_V_2_6_27_1 is not set
# CT_KERNEL_V_2_6_27_2 is not set
# CT_KERNEL_V_2_6_27_3 is not set
# CT_KERNEL_V_2_6_27_4 is not set
# CT_KERNEL_V_2_6_27_5 is not set
# CT_KERNEL_V_2_6_27_6 is not set
CT_KERNEL_LINUX_VERBOSITY_0=y
# CT_KERNEL_LINUX_VERBOSITY_1 is not set
# CT_KERNEL_LINUX_VERBOSITY_2 is not set
CT_KERNEL_LINUX_VERBOSE_LEVEL=0
# CT_KERNEL_LINUX_USE_CUSTOM_DIR is not set
#
# GMP and MPFR
#
# CT_GMP_MPFR is not set
# CT_GMP_V_4_2_2 is not set
# CT_GMP_V_4_2_4 is not set
# CT_MPFR_V_2_3_1 is not set
# CT_MPFR_V_2_3_2 is not set
#
# binutils
#
CT_BINUTILS_VERSION="2.19"
# CT_BINUTILS_V_2_14 is not set
# CT_BINUTILS_V_2_15 is not set
# CT_BINUTILS_V_2_16_1 is not set
# CT_BINUTILS_V_2_17 is not set
# CT_BINUTILS_V_2_18 is not set
# CT_BINUTILS_V_2_18_50_0_4 is not set
# CT_BINUTILS_V_2_18_50_0_6 is not set
# CT_BINUTILS_V_2_18_50_0_7 is not set
# CT_BINUTILS_V_2_18_50_0_8 is not set
# CT_BINUTILS_V_2_18_50_0_9 is not set
# CT_BINUTILS_V_2_18_90 is not set
# CT_BINUTILS_V_2_18_91 is not set
# CT_BINUTILS_V_2_18_92 is not set
# CT_BINUTILS_V_2_18_93 is not set
CT_BINUTILS_V_2_19=y
# CT_BINUTILS_V_2_19_50_0_1 is not set
CT_BINUTILS_EXTRA_CONFIG=""
CT_BINUTILS_FOR_TARGET=y
CT_BINUTILS_FOR_TARGET_IBERTY=y
CT_BINUTILS_FOR_TARGET_BFD=y
#
# C compiler
#
CT_CC="gcc"
CT_CC_VERSION="4.2.4"
CT_CC_gcc=y
# CT_CC_V_2_95_3 is not set
# CT_CC_V_3_2_3 is not set
# CT_CC_V_3_3_6 is not set
# CT_CC_V_3_4_6 is not set
# CT_CC_V_4_0_0 is not set
# CT_CC_V_4_0_1 is not set
# CT_CC_V_4_0_2 is not set
# CT_CC_V_4_0_3 is not set
# CT_CC_V_4_0_4 is not set
# CT_CC_V_4_1_0 is not set
# CT_CC_V_4_1_1 is not set
# CT_CC_V_4_1_2 is not set
# CT_CC_V_4_2_0 is not set
# CT_CC_V_4_2_1 is not set
# CT_CC_V_4_2_2 is not set
# CT_CC_V_4_2_3 is not set
CT_CC_V_4_2_4=y
# CT_CC_V_4_3_0 is not set
# CT_CC_V_4_3_1 is not set
# CT_CC_V_4_3_2 is not set
# CT_CC_GCC_4_3_or_later is not set
CT_CC_CXA_ATEXIT=y
CT_CC_SJLJ_EXCEPTIONS_CONFIGURE=y
# CT_CC_SJLJ_EXCEPTIONS_USE is not set
# CT_CC_SJLJ_EXCEPTIONS_DONT_USE is not set
CT_CC_CORE_EXTRA_CONFIG=""
CT_CC_EXTRA_CONFIG=""
CT_CC_SUPPORT_CXX=y
CT_CC_SUPPORT_FORTRAN=y
CT_CC_SUPPORT_JAVA=y
CT_CC_SUPPORT_ADA=y
CT_CC_SUPPORT_OBJC=y
CT_CC_SUPPORT_OBJCXX=y
#
# Additional supported languages:
#
CT_CC_LANG_CXX=y
# CT_CC_LANG_FORTRAN is not set
# CT_CC_LANG_JAVA is not set
CT_LIBC="uClibc"
#
# C-library
#
CT_LIBC_VERSION="0.9.30"
# CT_LIBC_eglibc is not set
# CT_LIBC_glibc is not set
CT_LIBC_uClibc=y
# CT_LIBC_V_0_9_28 is not set
# CT_LIBC_V_0_9_28_1 is not set
# CT_LIBC_V_0_9_28_2 is not set
# CT_LIBC_V_0_9_28_3 is not set
# CT_LIBC_V_0_9_29 is not set
CT_LIBC_V_0_9_30=y
# CT_LIBC_V_snapshot is not set
# CT_LIBC_V_specific_date is not set
# CT_LIBC_UCLIBC_PARALLEL is not set
CT_LIBC_UCLIBC_VERBOSITY_0=y
# CT_LIBC_UCLIBC_VERBOSITY_1 is not set
CT_LIBC_UCLIBC_VERBOSITY=""
CT_LIBC_UCLIBC_DEBUG_LEVEL_0=y
# CT_LIBC_UCLIBC_DEBUG_LEVEL_1 is not set
# CT_LIBC_UCLIBC_DEBUG_LEVEL_2 is not set
CT_LIBC_UCLIBC_DEBUG_LEVEL=0
CT_LIBC_UCLIBC_CONFIG_FILE="${CT_LIB_DIR}/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"
# CT_LIBC_UCLIBC_LOCALES is not set
#
# Common C library options
#
# CT_LIBC_SUPPORT_NPTL is not set
CT_LIBC_SUPPORT_LINUXTHREADS=y
CT_THREADS="linuxthreads"
# CT_THREADS_NPTL is not set
CT_THREADS_LINUXTHREADS=y
# CT_THREADS_NONE is not set
#
# Tools facilities
#
# CT_TOOL_libelf is not set
# CT_LIBELF_V_0_8_10 is not set
# CT_TOOL_sstrip is not set
# CT_SSTRIP_ELFKICKERS is not set
# CT_SSTRIP_BUILDROOT is not set
#
# Debug facilities
#
# CT_DEBUG_dmalloc is not set
# CT_DMALLOC_V_5_4_3 is not set
# CT_DMALLOC_V_5_5_2 is not set
# CT_DEBUG_duma is not set
# CT_DUMA_V_2_5_1 is not set
# CT_DUMA_V_2_5_8 is not set
# CT_DUMA_V_2_5_12 is not set
# CT_DUMA_V_2_5_14 is not set
# CT_DEBUG_gdb is not set
# CT_GDB_V_6_4 is not set
# CT_GDB_V_6_5 is not set
# CT_GDB_V_6_6 is not set
# CT_GDB_V_6_7 is not set
# CT_GDB_V_6_7_1 is not set
# CT_GDB_V_6_8 is not set
# CT_GDB_V_snapshot is not set
# CT_NCURSES_V_5_6 is not set
# CT_DEBUG_ltrace is not set
# CT_LTRACE_V_0_4 is not set
# CT_LTRACE_V_0_5 is not set
# CT_DEBUG_strace is not set
# CT_STRACE_V_4_5 is not set
# CT_STRACE_V_4_5_14 is not set
# CT_STRACE_V_4_5_15 is not set
# CT_STRACE_V_4_5_16 is not set
# CT_STRACE_V_4_5_17 is not set
# CT_STRACE_V_4_5_18 is not set
В конфиге uclibc еще точнее определил архитектуру:
# CONFIG_GENERIC_ARM is not set
CONFIG_ARM926T=y
Когда у Вас что-то "не работает", конкретизируйте причину, компьютер довольно подробно рассказывает ЧТО ему не нравится... возможно, просто нужно внимательннее читать...
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Отредактированно repairman 03.02.2009 г. в 11:42:54
sasamy (Guest)
В аттаче конфиги crosstool-ng и uclibc. При сборке в конфигураторе нужно будет указать где лежит конфиг от uclibc так как у меня там мой путь прописан._ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Отредактированно sasamy 03.02.2009 г. в 13:44:32