µ±ÎÒÃÇÐèÒª´ÓÔ´´úÂë±àÒë³öÒ»¸öÄÜÔËÐÐÔÚ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
#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Îĵµ£¬ÓÐÐèÒªµÄͬѧ¸úÎÒ·¢ÏûÏ¢£¬ÁôÏÂÄãÃǵÄÓÊÏä¡£
jeffkuang1 ÓÚ 2013-10-12 16:21:52·¢±í:
ѧϰÁË¡£¡£
ÓÚ 2013-10-10 18:38:17·¢±í:
Èç¹ûÂ¥Ö÷ÓйØÓÚsparc-linux½»²æ±àÒë»·¾³µÄ½Ì³ÌµÄ»°£¬¸Ð¼¤²»¾¡£ºuihsvi@qq.com
ÓÚ 2013-10-10 18:36:53·¢±í:
Â¥Ö÷ÓйØÓÚ sparc-linux½»²æ±àÒëÁ¬ÖÆ×÷µÄ½Ì³Ìû£¿Óеϰ¿É·ñ¸øÎÒ·¢Ò»Ï£¬¸Ð¼¤²»¾¡£ºuihsvi@qq.com
jeffkuang1 ÓÚ 2013-10-09 21:43:18·¢±í:
ѧϰÁË¡£
ÓÚ 2013-08-20 15:51:36·¢±í:
840295111@qq.com
Âé·³Ò²·¢ÎÒÒ»·Ý°É£¡£¡Ð»Ð»ÁË£¡£¡£¡
haoyu592 ÓÚ 2012-03-15 11:39:09·¢±í:
ѧϰÁË
ÓÚ 2012-02-21 16:49:58·¢±í:
kenvinll@sina.com
ma-ml ÓÚ 2011-12-21 10:33:46·¢±í:
ѧϰһÏÂ
lsl129 ÓÚ 2011-12-20 14:20:22·¢±í:
519528009@qq.com ллÁË
ÄêÄêÄê ÓÚ 2011-07-21 11:39:17·¢±í:
:0wpoi2
szzfq61 ÓÚ 2011-07-21 11:14:56·¢±í:
may i have the word doc?
thanks....
ÃÔ²ÊÍÊÉ« ÓÚ 2011-07-02 15:50:47·¢±í:
5# hb756091339
ºÇºÇ£¬Êǵġ£
hb756091339 ÓÚ 2011-06-27 15:41:49·¢±í:
»¨ÁËÒ»´ó±ÊÇ®²Î¼ÓÁËÅàѵ£¬¿ÉÊÇÏÖÔÚÔÚ×öPc£¬Ç¶ÈëʽÔçÍü¹âÁË
liuleaini ÓÚ 2011-06-27 15:23:09·¢±í:
ѧϰÀ²~~~л¥Ö÷
AiLeaf ÓÚ 2011-06-27 14:47:32·¢±í:
ѧϰÀ²~~~л¥Ö÷
aoodo ÓÚ 2011-06-25 09:07:13·¢±í:
³¤¼ûʶ