ºìÁªLinuxÃÅ»§
Linux°ïÖú

ÈçºÎ½¨Á¢½»²æ±àÒ빤¾ßÁ´

·¢²¼Ê±¼ä:2011-06-24 16:26:21À´Ô´:ºìÁª×÷Õß:ÃÔ²ÊÍÊÉ«
Ò»£®¸ÅÊö
µ±ÎÒÃÇÐèÒª´ÓÔ´´úÂë±àÒë³öÒ»¸öÄÜÔËÐÐÔÚARM ¼Ü¹¹ÉϵijÌÐòµÄʱºò£¬ÎÒÃÇ¿ÉÒÔÓÐÁ½ÖÖ·½·¨¡£µÚÒ»ÖÖÊÇÏñÎÒÃÇÆ½³£Ò»Ñù£¬Ê¹ÓÃÏàͬ¼Ü¹¹»úÆ÷ÉϵıàÒëÆ÷£¬±àÒë³öÔËÐÐÔÚͬһ¼Ü¹¹ÉϵijÌÐò¡£ÔÚǶÈëʽϵͳÁìÓò£¬ÕâÊǽÏÄÑʵÏֵġ£Ç¶ÈëʽϵͳµÄÔÚÉè¼ÆµÄʱºòÓÉÓÚ¿¼Âǵ½¹¦ºÄ£¬Ìå»ýµÈÒªÇó£¬ÐÔÄÜÍùÍù½ÏÈõ¡£ÔÚ±àÒëһЩ±È½Ï´ó¹æÄ£µÄ³ÌÐòʱºò£¬Ç¶ÈëʽϵͳÔÚ±àÒëÉϺķѵÄʱ¼ä£¬ÊÇÎÒÃÇÎÞ·¨ÈÌÊܵġ£Òò´Ë£¬ÎÒÃÇÐèҪʹÓý»²æ±àÒë¼¼Êõ¡£
½»²æ±àÒë¼¼Êõ£¬ÊÇÒ»ÖÖÔÚÒ»¸öÒ칹ƽ̨ÉϱàÒë³öÄ¿±êƽ̨³ÌÐòµÄÒ»ÖÖ¼¼Êõ¡£ÀíÂÛÉÏÀ´Ëµ£¬½»²æ¹¤¾ßÁ´¿ÉÒÔÓÃÔÚÈκÎÁ½ÖÖÒì¹¹µÄϵͳÖУ¬ÀýÈ磬ÎÒÃÇ¿ÉÒÔ¹¹½¨³öPowerPC-ARM¹¤¾ßÁ´£¬Sun Sparc-x86¹¤¾ßÁ´µÈµÈ¡£Ä¿Ç°½»²æ¹¤¾ßÁ´Ò»°ãÓÃÓÚÄ¿±êƽ̨¼ÆËãÄÜÁ¦½ÏÈõ£¬ÐèÒªÆäËû¼ÆËãÄÜÁ¦½ÏÇ¿µÄƽ̨°ïÖú²úÉú¿ÉÔËÐÐÈí¼þµÄ³¡ºÏ¡£ÔÚ»ùÓÚARMµÄǶÈëʽϵͳ¿ª·¢ÖУ¬ÎÒÃÇÒ»°ã»áʹÓÃx86¼Ü¹¹µÄ¼ÆËã»úϵͳ×÷Ϊ¹¤×÷Õ¾£¬¹Ê×îΪ³£ÓõÄÊÇx86-ARM½»²æ¹¤¾ßÁ´¡£ ĿǰÊг¡ÉÏ´æÔÚן÷ÖÖ¸÷Ñù²»ÓõÄx86-ARM½»²æ¹¤¾ßÁ´£¬ÓÐARM¹«Ë¾×Ô¼ÒÔÚRVDS¿ª·¢¹¤¾ßÖÐÕûºÏµÄarmcc£¬ÓÐMicrosoft ÔÚPlatform BuilderÖеÄarmv4I ±àÒëÆ÷µÈ¡£Ò»°ãÀ´Ëµ£¬ÕâЩÓÉÉÌÒµ¹«Ë¾ÌṩµÄ¹¤¾ßÁ´£¬¶¼²»»á¸½Óй¤¾ßÁ´Ïà¹ØµÄÔ´´úÂëºÍÖÆ×÷·½·¨£¬Áé»îÐÔ²»×㣬²¢ÇÒËüÃÇÒ»°ã¶¼ÓëÕûÌ׿ª·¢ÏµÍ³À¦°óÏúÊÛʹÓ㬳ɱ¾½Ï¸ß¡£ÎªÁ˸üºÃµÄÀí½âÕâÖÖ¼¼ÊõºÍ½µµÍ³É±¾£¬»ñµÃ¸üºÃµÄÁé»îÐÔ£¬Êг¡ÉÏÓв»ÉٵĹ«Ë¾Ê¹Óùú¼Ê¿ªÔ´×éÖ¯GNU¿ª·¢µÄ¹¤¾ßÁ´×÷ΪËûÃDzúÆ·¿ª·¢µÄ¹¤¾ß¡£±¾ÎÄÏÂÃæµÄÕ½ھÍΪ´ó¼Òչʾһ¸öÍêÕûµÄGNU¹¤¾ßÁ´¹¹½¨¹ý³Ì¡£ÆäÖпÉÄÜÉæ¼°µ½Ò»Ð©GNU LinuxϵͳµÄ»ù±¾²Ù×÷֪ʶ£¬Èç¹û´ó¼Ò¶Ô´ËÈÏʶ²»ÉÇë×ÔÐвéÔÄÏà¹Ø×ÊÁÏ¡£



¶þ£®¹¤¾ßÁ´Ô­Àí¼°¹¹½¨·½·¨
ÿһ¸öÈí¼þ£¬ÔÚ±àÒëµÄ¹ý³ÌÖУ¬¶¼Òª¾­¹ýһϵÁеĴ¦Àí£¬²ÅÄÜ´ÓÔ´´úÂë±ä³É¿ÉÖ´ÐеÄÄ¿±ê´úÂë¡£ÕâһϵÁд¦Àí°üÀ¨£ºÔ¤±àÒ룬¸ß¼¶ÓïÑÔ±àÒ룬»ã±à£¬Á¬½Ó¼°Öض¨Î»¡£ÕâÒ»Ì×Á÷³ÌÀïÃæÓõ½µÄÿ¸ö¹¤¾ßºÍÏà¹ØµÄ¿â×é³ÉµÄ¼¯ºÏ£¬¾Í³ÆÎª¹¤¾ßÁ´£¨tool chain£©¡£ÒÔGNUµÄ¿ª·¢¹¤¾ßGCCΪÀý£¬Ëü¾Í°üÀ¨ÁËÔ¤±àÒëÆ÷cpp£¬c±àÒëÆ÷gcc£¬»ã±àÆ÷as£¬ºÍÁ¬½ÓÆ÷ldµÈ¡£ÔÚGNU×Ô¼º¶Ô¹¤¾ßÁ´¶¨ÒåÖУ¬»¹¼Ó½øÁËÒ»Ì×¶îÍâµÄÓÃÓÚ´¦Àí¶þ½øÖưüµÄ¹¤¾ß°übinutils£¬Õû¸ö¹¤¾ßÁ´Ó¦¸ÃÊÇGCC+binutils+Glibc£¬²»¹ý´ó¼ÒºóÃæ½«»á¿´µ½binutilsÆäʵÓëGlibcÎ޹أ¬ËüÊÇ¿ÉÒÔ±»¶ÀÁ¢°²×°µÄ£¬ËùÒÔGNU¹¤¾ßÁ´Ò²¿ÉÒÔÏÁÒ嵨±»Àí½âΪGCC+Glibc¡£
Ò»°ãµÄÇé¿öÏ£¬¹¤¾ßÁ´ÔËÐеĻ·¾³ºÍËü²úÉúµÄÄ¿±ê´úÂëµÄ»·¾³ÊÇÒ»Öµġ£ÀýÈçÎÒÃÇÔÚVCÖбàÒëÒ»¸ö³ÌÐò£¬¹¤¾ßÁ´ÔËÐÐÔÚx86ƽ̨£¬²úÉúµÄÒ²ÊÇÔËÐÐÔÚx86ƽ̨ÉϵĴúÂë¡£µ«Êµ¼ÊÉÏ£¬¹¤¾ßÁ´²úÉúµÄÄ¿±ê´úÂëµÄÔËÐÐÆ½Ì¨ÊÇ¿ÉÒÔ¸ú¹¤¾ßÁ´ÔËÐеĻ·¾³²»Ò»Öµġ£ÕâÖÖ²úÉúÓëÔËÐл·¾³²»Ò»ÖµÄÄ¿±ê´úÂëµÄ¹¤¾ßÁ´£¬³ÆÎª½»²æ¹¤¾ßÁ´(cross-compiler tool chain)£¬Ê¹ÓÃÕâÖÖ¹¤¾ßÁ´µÄ±àÒë¹ý³Ì¶ÔÓ¦µØ±»³ÆÎª½»²æ±àÒë(cross-compile)¡£ÔÚGNUÖУ¬Ò»°ãÔÚÆÕͨ¹¤¾ßÁ´Ãû³ÆµÄÇ°Ãæ¼ÓÉÏÌØ¶¨µÄǰ׺£¬ÒÔ±íʾÊÇʲôÀàÐ͵Ť¾ßÁ´¡£ÀýÈçx86-armµÄ¹¤¾ßÁ´£¬Ô¤±àÒëÆ÷ÊÇarm-linux-cpp£¬c±àÒëÆ÷arm-linux-gccµÈ¡£
Òª¹¹½¨³öÒ»¸ö½»²æ¹¤¾ßÁ´£¬ÐèÒª½â¾öÈý¸öÎÊÌâ¡£Ò»ÊÇÕâ¸ö¹¤¾ßÁ´±ØÐëÊÇ¿ÉÒÔÔËÐÐÔÚÔ­¹¤×÷վƽ̨Éϵġ£¶þÊÇÎÒÃÇÐèÒª¸ü»»Ò»¸öÓëÄ¿±êƽ̨¶ÔÓ¦µÄ»ã±àÆ÷£¬Ê¹µÃ¹¤¾ßÁ´ÄܲúÉú¶ÔÓ¦µÄÄ¿±ê´úÂ룬ÈýÊÇÒª¸ü»»Ò»Ì×ÓëÄ¿±êƽ̨¶ÔÓ¦µÄ¶þ½øÖƿ⣬ʹµÃ¹¤¾ßÁ´ÔÚÁ¬½ÓʱÄÜÕÒµ½ÕýÈ·µÄ¶þ½øÖƿ⡣
Ò»ÏÂÊÇÎÒÃǵĽâ¾ö·½·¨¡£Ê×ÏÈÎÒÃǽ¨Ò»¸öĿ¼£¬×÷Ϊ´æ·Å¹¤¾ßÁ´µÄµØ·½¡£ÒòΪbinutilsºÍGlibcÍ·ÎļþµÄ¶ÀÁ¢ÐÔ£¬ÎÒÃÇÏȰÑËûÃǷŵ½Õâ¸öĿ¼ÀïÃæ¡£ÈçʾÒâͼ1Ëùʾ

È»ºóÎÒÃÇʹÓù¤×÷վƽ̨µÄ¹¤¾ßÁ´£¬±àÒë³öÒ»Ìõ½»²æ¹¤¾ßÁ´£¬Í¨¹ýÖ¸¶¨¹¤¾ßÁ´µÄÀàÐÍ£¬ÎÒÃÇ¿ÉÒÔ¿ØÖƸù¤¾ßÁ´»ã±àÆ÷µÄÊä³öÀàÐÍ¡£µ«´Ëʱ¸Ã¹¤¾ßÁ´Ö¸Ïò¿âÒÀÈ»Êǹ¤×÷վƽ̨µÄ¶þ½øÖƿ⡣´Ë½×¶Î³ÆÎªGCC Stage1¡£ÈçʾÒâͼ2Ëùʾ

½ÓÏÂÀ´ÎÒÃÇÀûÓøոս¨Á¢µÄGCC¹¹½¨Ò»¸öÄ¿±êƽ̨µÄ¶þ½øÖƿ⡣ÓÉÓÚ¶þ½øÖƿⶼÊÇ×Ô°üº¬µÄ£¬ËùÒÔÎÒÃÇÎÞÐèµ£ÐÄÕâ¸ö¶þ½øÖÆ¿âÖлáµ÷Óù¤×÷վƽ̨µÄ¿â½ø¶ø²úÉúÒÀÀµÎÊÌâ¡£¼ûʾÒâͼ3

×îºóÎÒÃÇʹÓù¤×÷վƽ̨µÄ¹¤¾ßÁ´ÖØÐ±àÒëÒ»´ÎGCC£¬Ê¹µÃGCCÖ¸ÏòбàÒë³öÀ´µÄ¿â£¬´Ë½×¶Î³ÆÎªGCC Stage2¡£

Èý£®¾ßÌåʵÏÖ
ÏÂÃæÎÒÃÇÔÚÒ»¸ö°²×°GNU Linux µÄworkstationÉϰ²×°Ò»ÌõÓÃÓÚ±àÒëARM v4I³ÌÐòµÄ¹¤¾ßÁ´¡£
Ê×ÏÈÎÒÃÇÉèÖÃһЩ»·¾³±äÁ¿£¬ÒÔ·½±ãÎÒÃÇÈÕºóµÄ¹¤×÷¡£Í¬Ê±½¨Á¢Ò»¸öĿ¼ÒÔ´æ·ÅÎÒÃǵŤ¾ßÁ´¡£½¨Á¢Ò»¸öShell½Å±¾Îļþ²¢ÔËÐÐËü¡£
´úÂ룺
TARGET=arm-unknown-linux-gnu
PREFIX=/usr/arm
SYSROOT=${PREFIX}/sysroot
export ARCH=arm
export CROSS_COMPILE=${TARGET}-
export PATH=$PATH:${PREFIX}/bin
mkdir -p ${PREFIX}/src

½ÓÏÂÀ´ÎÒÃÇ»ñÈ¡Ïà¹ØµÄÔ´´úÂëºÍ²¹¶¡°ü£º
´úÂ룺
http://ftp.gnu.org/gnu/binutils/binutils-2.16.tar.gz \
http://ftp.gnu.org/gnu/gcc/gcc-3.4.4/gcc-3.4.4.tar.bz2 \
"http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3" \
http://frank.harvard.edu/~coldwell/toolchain/t-linux.diff \
http://ftp.gnu.org/gnu/glibc/glibc-2.3.5.tar.gz \
http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.5.tar.gz \
http://frank.harvard.edu/~coldwell/toolchain/ioperm.c.diff \
http://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.gz \

°ÑËüÃǶ¼´æ·ÅÔÚsrc£¬Ä¿Â¼Ï¡£

×¢£º
ÄãÐèÒª°Ñ
"http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3" \
ÖеÄÄÚÈݸ´ÖƲ¢±£´æÎªÎļþ£¬È¡Ãûflow.c.diff

½ÓÏÂÀ´ÎÒÃǰ²×°binutils£¬¹ý³Ì·Ç³£¼òµ¥¡£
´úÂ룺
#cd ${PREFIX}/src
#tar xvfz binutils-2.16.tar.gz
#mkdir -p BUILD/binutils-2.16
#cd BUILD/binutils-2.16
../../binutils-2.16/configure --prefix=${PREFIX} --target=${TARGET} --with-sysroot=${SYSROOT} 2>&1 | tee configure.out
#make 2>&1 | tee make.out
#make install 2>&1 | tee -a make.out

ÏÂÒ»²½°²×°Linux header¡£
´úÂ룺
cd ${PREFIX}/src
tar xvfz linux-2.6.10.tar.gz
ln -s linux-2.6.10 linux
cd linux
make s3c2410_defconfig
make include/linux/version.h
mkdir -p ${SYSROOT}/usr/include
cp -a ${PREFIX}/src/linux/include/linux ${SYSROOT}/usr/include/linux
cp -a ${PREFIX}/src/linux/include/asm-arm ${SYSROOT}/usr/include/asm
cp -a ${PREFIX}/src/linux/include/asm-generic ${SYSROOT}/usr/include/asm-generic

ÏÂÒ»²½£¬ÎÒÃǰ²×°Glibc Í·Îļþ¡£GlibcÍ·ÎļþÔÚ±àÒëGCCµÄʱºò±»Óõ½¡£ÎÒÃÇ¿ÉÒÔÔÚÏÂÔØ»ØÀ´ÖеÄGlibcÕÒµ½ÕâЩͷÎļþ¡£ÐèҪעÒâµÄÊÇ£¬ÓÐÁ½¸öÍ·Îļþstubs.hºÍstdio_lim.hÖ»ÓÐÔÚ±àÒëGlibcʱ²Å»á²úÉú£¬ÎÒÃǽ¨Á¢Ò»¸ö¿ÕÎļþÀ´½â¾öÕâ¸öÎÊÌâ¡£
´úÂ룺
#cd ${PREFIX}/src
#tar xvfz glibc-2.3.5.tar.gz
#patch -d glibc-2.3.5 -p1 #cd glibc-2.3.5
#tar xvfz ../glibc-linuxthreads-2.3.5.tar.gz
#cd ..
#mkdir -p BUILD/glibc-2.3.5-headers
#cd BUILD/glibc-2.3.5-headers
../../glibc-2.3.5/configure --prefix=/usr --host=${TARGET} --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out
#make cross-compiling=yes install_root=${SYSROOT} install-headers 2>&1 | tee make.out
#touch ${SYSROOT}/usr/include/gnu/stubs.h
#touch ${SYSROOT}/usr/include/bits/stdio_lim.h

Glibc°²×°ºÃºó£¬ÎÒÃÇ¿ªÊ¼±àÒëGCC Stage1¡£ÆäÖÐÓÐÁ½¸öÎļþÐèÒª´ò²¹¶¡ÒÔ½â¾öһЩbug¡£µÚÒ»¸ö²¹¶¡Ê¹µÃÕâ´Î±àÒë¹ý³ÌÄܲúÉú³öCÔËÐÐʱÎļþ crti.o ºÍ crtn.o¡£ÕâÁ½¸öÎļþÔÚGCC StageÖб»Óõ½¡£µÚ¶þ¸ö²¹¶¡ÓÃÀ´½â¾ö±àÒë¹ý³ÌÖвúÉúµÄ±àÒëÆ÷ÄÚ²¿´íÎó£¨ICE£©ÎÊÌâ¡£

´úÂ룺
#cd ${PREFIX}/src
#bunzip2 -c gcc-3.4.4.tar.bz2 | tar xvf -
#patch -d gcc-3.4.4 -p1 < flow.c.diff
#patch -d gcc-3.4.4 -p1 < t-linux.diff
#mkdir -p BUILD/gcc-3.4.4-stage1
#cd BUILD/gcc-3.4.4-stage1
../../gcc-3.4.4/configure --prefix=${PREFIX} --target=${TARGET} --enable-languages=c --with-sysroot=${SYSROOT} 2>&1 | tee configure.out
#make 2>&1 | tee make.out
#make install 2>&1 | tee -a make.out

ʹÓøձàÒë³öµÄGCC±àÒëGlibc
´úÂ룺
#cd ${PREFIX}/src
# mkdir -p BUILD/glibc-2.3.5
#cd BUILD/glibc-2.3.5
BUILD_CC=gcc CC=${CROSS_COMPILE}gcc AR=${CROSS_COMPILE}ar RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld ../../glibc-2.3.5/configure --prefix=/usr --build=i386-redhat-linux --host=arm-unknown-linux-gnu --target=arm-unknown-linux-gnu --without-__thread --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out
#make 2>&1 | tee make.out
#make install_root=${SYSROOT} install

ÖØÐ±àÒëGCC£¬¼´GCCStage2
´úÂ룺
#cd ${PREFIX}/src
#mkdir -p BUILD/gcc-3.4.4
#cd BUILD/gcc-3.4.4
../../gcc-3.4.4/configure --prefix=${PREFIX} --target=${TARGET} --enable-languages=c --with-sysroot=${SYSROOT} 2>&1 | tee configure.out
#make 2>&1 | tee make.out
#make install 2>&1 | tee -a make.out

½»²æ¹¤¾ßÁ´ÖÁ´Ë½¨Á¢Íê³É¡£



ÁíÍ⣺ÎÒÓдËwordÎĵµ£¬ÓÐÐèÒªµÄͬѧ¸úÎÒ·¢ÏûÏ¢£¬ÁôÏÂÄãÃǵÄÓÊÏä¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 16 ÌõÆÀÂÛ

  1. jeffkuang1 ÓÚ 2013-10-12 16:21:52·¢±í:

    ѧϰÁË¡£¡£

  2. ÓÚ 2013-10-10 18:38:17·¢±í:

    Èç¹ûÂ¥Ö÷ÓйØÓÚsparc-linux½»²æ±àÒë»·¾³µÄ½Ì³ÌµÄ»°£¬¸Ð¼¤²»¾¡£ºuihsvi@qq.com

  3. ÓÚ 2013-10-10 18:36:53·¢±í:

    Â¥Ö÷ÓйØÓÚ sparc-linux½»²æ±àÒëÁ¬ÖÆ×÷µÄ½Ì³Ìû£¿Óеϰ¿É·ñ¸øÎÒ·¢Ò»Ï£¬¸Ð¼¤²»¾¡£ºuihsvi@qq.com

  4. jeffkuang1 ÓÚ 2013-10-09 21:43:18·¢±í:

    ѧϰÁË¡£

  5. ÓÚ 2013-08-20 15:51:36·¢±í:

    840295111@qq.com
    Âé·³Ò²·¢ÎÒÒ»·Ý°É£¡£¡Ð»Ð»ÁË£¡£¡£¡

  6. haoyu592 ÓÚ 2012-03-15 11:39:09·¢±í:

    ѧϰÁË

  7. ÓÚ 2012-02-21 16:49:58·¢±í:

    kenvinll@sina.com

  8. ma-ml ÓÚ 2011-12-21 10:33:46·¢±í:

    ѧϰһÏÂ

  9. lsl129 ÓÚ 2011-12-20 14:20:22·¢±í:

    519528009@qq.com ллÁË

  10. ÄêÄêÄê ÓÚ 2011-07-21 11:39:17·¢±í:

    :0wpoi2

  11. szzfq61 ÓÚ 2011-07-21 11:14:56·¢±í:

    may i have the word doc?
    thanks....

  12. ÃÔ²ÊÍÊÉ« ÓÚ 2011-07-02 15:50:47·¢±í:

    5# hb756091339
    ºÇºÇ£¬Êǵġ£

  13. hb756091339 ÓÚ 2011-06-27 15:41:49·¢±í:

    »¨ÁËÒ»´ó±ÊÇ®²Î¼ÓÁËÅàѵ£¬¿ÉÊÇÏÖÔÚÔÚ×öPc£¬Ç¶ÈëʽÔçÍü¹âÁË

  14. liuleaini ÓÚ 2011-06-27 15:23:09·¢±í:

    ѧϰÀ²~~~л¥Ö÷

  15. AiLeaf ÓÚ 2011-06-27 14:47:32·¢±í:

    ѧϰÀ²~~~л¥Ö÷

  16. aoodo ÓÚ 2011-06-25 09:07:13·¢±í:

    ³¤¼ûʶ