d4s: (Default)
[personal profile] d4s
Ура ! наконец-то эпопея с корректной сборкой армовского тулчейна завершена !
На самом деле, все не очень сложно, если использовать мануал и исходники от cross-lfs для ARM, хотя и там есть засады - например, ссылаются на glibc 2.8.1, а на ftp лежит версия 2.6.1 ;-)

В общем, так не интересно ;-) Поэтому, в качестве дополнительного условия, решил использовать, в качестве базовых, версии исходников, которые являются актуальными в сизифе на данный момент. Благодаря работе ldv@ проблем практически не возникло - только glibc потребовал косметического вмешательства, правда, эти мелочи в cross-lfs для ARM не

unset CFLAGS
unset CXXFLAGS

export CLFS_HOST="$(echo $MACHTYPE |sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")"
    $ echo $CLFS_HOST
    i586-cross-linux-gnu

export CLFS_TARGET="armv5tel-alt-linux-gnu"
export CLFS=/home/d4s/arm/toolchain

export PATH=$CLFS/bin:$CLFS/cross-tools/bin:$PATH

------------------------------------------------------------------------

kernel headers:

#using glibc-kernheaders instead real kernel
cd glibc-kernheaders-2.6.27-alt3
make ARCH=arm INSTALL_HDR_PATH=dest headers_install
mkdir -p ${CLFS}/usr/include
cp -rv dest/include/* ${CLFS}/usr/include

------------------------------------------------------------------------

gmp:

./configure --prefix=${CLFS}/cross-tools --enable-cxx --enable-mpbsd
make -j 8
make install

------------------------------------------------------------------------

mkfr:

LDFLAGS="-Wl,-rpath,${CLFS}/cross-tools/lib" ./configure --prefix=${CLFS}/cross-tools --enable-shared --with-gmp=${CLFS}/cross-tools
make
make install

------------------------------------------------------------------------

binutils:

mkdir binutils
cd binutils
AR=ar AS=as ../binutils-2.18.50.0.9/configure --prefix=${CLFS}/cross-tools --host=${CLFS_HOST} --target=${CLFS_TARGET} --with-sysroot=${CLFS} --disable-nls --enable-shared --disable-multilib
make
make install
cp -v ../binutils-2.18.50.0.9/include/libiberty.h ${CLFS}/usr/include

------------------------------------------------------------------------

Cross GCC Compiler with Static libgcc and no Threads:

AR=ar LDFLAGS="-Wl,-rpath,${CLFS}/cross-tools/lib" ../gcc-4.3.2-20081105/configure --prefix=${CLFS}/cross-tools --build=${CLFS_HOST} --host=${CLFS_HOST} --target=${CLFS_TARGET} --disable-multilib --with-sysroot=${CLFS} --disable-nls --without-headers --with-newlib --disable-decimal-float --disable-libgomp --disable-libmudflap --disable-libssp --with-mpfr=${CLFS}/cross-tools --with-gmp=${CLFS}/cross-tools --disable-shared --disable-threads --enable-languages=c
make
make install

------------------------------------------------------------------------

glibc:


mkdir glibc
cd glibc

cat > config.cache << EOF
libc_cv_forced_unwind=yes
libc_cv_c_cleanup=yes
libc_cv_gnu89_inline=yes
EOF

echo "install_root=${CLFS}" > configparms
echo "CFLAGS += -fno-stack-protector" >> configparms

ln -s $CLFS/usr/include/linux/limits.h $CLFS/usr/include/

patch glibc-2.9-alt3/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
http://www.nabble.com/arm-linux-compilation-failure-and-possible-fix-td19229074.html

patch glibc-2.9-alt3/ports/sysdeps/arm/fpu/setjmp.S
http://sourceware.org/ml/libc-ports/2008-12/msg00011.html

cp ./bits/libc-tsd.h ./include-native/bits/libc-tsd.h

BUILD_CC="gcc" CC="${CLFS_TARGET}-gcc" AR="${CLFS_TARGET}-ar" RANLIB="${CLFS_TARGET}-ranlib" ../glibc-2.9-alt3/configure --prefix=/usr --libexecdir=/usr/lib/glibc --host=${CLFS_TARGET} --build=${CLFS_HOST} --disable-profile --enable-add-ons --with-tls --enable-kernel=2.6.9 --with-__thread --with-binutils=${CLFS}/cross-tools/bin --with-headers=${CLFS}/usr/include --cache-file=config.cache

cat > ${CLFS}/etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf

passwd: files
group: files
shadow: files

hosts: files dns
networks: files

protocols: files
services: files
ethers: files
rpc: files

# End /etc/nsswitch.conf
EOF

TZDIR="${CLFS}/usr/share/zoneinfo" ${CLFS}/usr/bin/tzselect

cp -vf ${CLFS}/usr/share/zoneinfo/Europe/Minsk ${CLFS}/etc/localtime

------------------------------------------------------------------------

Cross compiler final version:

mkdir gcc-final
cd mkdir-final

AR=ar LDFLAGS="-Wl,-rpath,${CLFS}/cross-tools/lib" ../gcc-4.3.2-20081105/configure --prefix=${CLFS}/cross-tools --build=${CLFS_HOST} --host=${CLFS_HOST} --target=${CLFS_TARGET} --disable-multilib --with-sysroot=${CLFS} --disable-nls --enable-shared --enable-languages=c,c++ --enable-__cxa_atexit --with-mpfr=${CLFS}/cross-tools --with-gmp=${CLFS}/cross-tools --enable-c99 --enable-long-long --enable-threads=posix

make -j 8 AS_FOR_TARGET="${CLFS_TARGET}-as" LD_FOR_TARGET="${CLFS_TARGET}-ld"

make install

PS я не "изобретатель велосипеда", я вспоминаю, как все это работает ;-)

PPS интересно, если все это каким-то образом опакетить и поставить на студенческие компы в комплекте с qemu-arm, то это будет востребовано в универе ?

PPPS на очереди обновление ядра для sabio ;-))) сборка, на которой проестировал свежесобранный тулчейн запускается, но полноценно не работет ;-) пока ;-)

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

d4s: (Default)
d4s

October 2016

M T W T F S S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2026-04-05 06:42
Powered by Dreamwidth Studios