***************************************************************************** TITLE: ÄÄÆÄÀÏ·¯ - ÃÖÀûÈ­(Compiler-optimization) AUTHOR: Gerard Beekmans (gerard@linuxfromscratch.org), ¹ø¿ª: Zenky(http://www.pulix.org) * Ȥ½Ã¶óµµ ¿À¿ªÀ̳ª ¿ÀŸ ÀÖÀ¸¸é ¸»¾¸ÇØÁÖ½Ã±æ ¹Ù¶ø´Ï´Ù. ÈÄ´Ù´Ú Çعö¸°°Å¶ó..^^; ***************************************************************************** Thomas-Balu- Walterµµ ÀÌ ±ÛÀÇ ¶Ç ´Ù¸¥ ÀúÀÚÀÌ´Ù. Çü½Ä»óÀÇ Á¦ÇÑ ¶§¹®¿¡ 2°³ÀÇ À̸ÞÀÏ ÁÖ¼Ò Áß 1ÀÇ ÁÖ¼Ò¸¦ »èÁ¦Çؾ߸¸ Çß´Ù. -SP HINT: ÀÌ ±ÛÀº LFS 2.4.3-version 6Àå ¿¡¼­ ½ÃÀ۵Ǿú°í, ±×°ÍÀ» Á¶±Ý °¡´Ùµë¾î ¸¸µç°ÍÀÌ´Ù. ÄÄÆÄÀÏ·¯´Â ´ëºÎºÐÀÇ ÇÁ·Î±×·¥°ú ¶óÀ̺귯¸®¸¦ ÄÄÆÄÀÏ ·¹º§2´Ü°è (gcc options -g and -O2)¸¦ ±âº»°ªÀ¸·Î Çϸç ƯÁ¤ÇÑ CPU ¿¡ ÃÖÀûÈ­ ÇÏ¿© ¸¸µé¼öµµ ÀÖ´Ù. º¸Åë ÀÎÅÚ ±â¹ÝÀÇ ÇÁ·Î±×·¥Àº ±âº»ÀûÀ¸·Î i386ÇÁ·Î¼¼¼­¿¡ ¸ÂÃß¾î CompileµÈ´Ù. È¥ÀÚ¾µ ÇÁ·Î±×·¥À̶ó¸é, ±× ÇÁ·Î±×·¥ÀÌ ´õ ºü¸¥¼Óµµ·Î µ¹¾Æ°¡±æ ¿øÇÒ¼öµµ ÀÖÀ»°ÍÀÌ´Ù.±×¸®°í ºü¸¥ COMPUTINGÀ»À§ÇØ ³ªÀº Compiler ¿É¼ÇÀ» »ç¿ëÇÏ°í ½ÍÀ»¼öµµ ÀÖÀ»°ÍÀÌ´Ù. CompilerÀÇ ±âº»°ª(Default)À» ¹Ù²Ù´Â ¸î°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ù¹ø° ¹æ¹ýÀ¸·Î ÇÁ·Î±×·¥ ÆÐÅ°Áö¼ÓÀÇ MakefileÀÇ ¼³Á¤°ªÀ» ÇϳªÇϳª ã¾Æ¼­ ¼öÁ¤ÇØÁÖ´Â ÀÏÀÌ´Ù. CFLAGS¿Í CXXFLAGS º¯¼ö(Àß ¸¸µé¾îÁøÇÁ·Î±×·¥Àº CFLAGS°ú CXXFLAGSº¯¼ö¸¦ Compiler ¿É¼ÇÀ» º¯°æÇϱâ À§ÇØ Á¦°øÇÑ´Ù.)´Â ±×µéÀÇ ¼º´ÉÀ» Çö½ÅÀûÀ¸·Î º¯È­½ÃÄÑÁØ´Ù. binutils, gcc, glibc ¿Í °°ÀÌ ¸¹Àº ÇÁ·Î±×·¥µéÀº ÇÏÀ§ µð·ºÅ丮¿¡ ¸¹Àº MakefileÆÄÀÏÀ» °¡Áö°í ÀÖ´Ù. ±×·¡¼­ ÀÌ°ÍÀ» ¼öÁ¤ÇÏ·Á¸é ¾Æ¹« ¸¹Àº½Ã°£ÀÌ °É¸±°ÍÀÌ´Ù. ±× ´ë½Å¿¡ ÀÏÀ» ÇÏ´Â ´õ ½¬¿î ¹æ¹ýÀÌ ÀÖ´Ù: CFLAGS¿Í CXXFLAGS ȯ°æ º¯¼ö¸¦ ¸¸µé¾î¶ó. ´ëºÎºÐÀÇ ÇÁ·Î±×·¥Àº CFLAGS¿Í CXXFLAGS º¯¼ö¸¦ ÀÌ¿ëÇÏ´Â ¼³Á¤À» ÀÌ¿ëÇÑ´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ ¼³Á¤ÀÌ ¾È¸ÔÈ÷´Â ¸î¸î ÇÁ·Î±×·¥Àº ¾î¿¼ö ¾øÀÌ MakefileÀ» ¼öÁ¤ÇØÁà¾ß µÉ°ÍÀÌ´Ù. bash ½©¿¡¼­´Â ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇØÁÙ¼ö ÀÖ´Ù(.bashrc¿¡ ÀÌ ¼³Á¤À» ³Ö¾îÁشٸé Ç×»ó ÀÌ ¿É¼ÇÀ» »ç¿ëÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù) export CFLAGS="-O3 -march=" && CXXFLAGS=$CFLAGS ÀÌ ÂªÀº ¼³Á¤Àº °ÅÀÇ ¸ðµç platform¿¡¼­ ÀÌ¿ëµÉ ¸¸ÇÑ ÃÖ¼ÒÇÑÀÇ ¼³Á¤ÀÌ´Ù. ÀÌ·¯ÇÑ ¿É¼ÇÀº ´ç½ÅÀÇ cpuÀÇ Æ¯Â¡À» °¨¾ÈÇÏ¿© compileÇÏ°Ô µµ¿ÍÁÙ°ÍÀÌ´Ù. ±×·±µ¥ ¼³Á¤ÇÑ ¿É¼Ç º¸´Ù ¼º´ÉÀÌ ¶³¾îÁö´Â cpu »ç¿ë½Ã ÇÁ·Î±×·¥ÀÌ Á¦´ë·Î µ¿ÀÛµÇÁö ¾ÊÀ»°ÍÀÌ´Ù.(À̶§ "Illegal Instruction, core dumped" °°Àº ¿¡·¯¸Þ½ÃÁö¸¦ º¸¿©ÁÙ°ÍÀÌ´Ù.) ÀÌÁ¦ °¡Àå ÃÖÀûÈ­µÈ ¼³Á¤À» ã±âÀ§ÇØ GccÀÇ ¼³¸í ÆäÀÌÁö¸¦ ÀÐÀ» ÇÊ¿ä°¡ ÀÖÀ»°ÍÀÌ´Ù. ±×°÷¿¡¼­ ãÀº ¼³Á¤°ªÀ» ¿¡ ³Ö¾î¶ó^^¾Æ¸¶µµ ÀÌ °ªÀº i586,i686,powerpc ¿Í °°Àº°ªÀÏ °ÍÀÌ´Ù. gcc ¸Þ´º¾óÀÎ http://gcc.gnu.org/onlinedocs/gcc_toc.html "Hardware Models and Configurations" ¿¡¼­ ±× ³»¿ëÀ» ãÀ»¼ö ÀÖÀ¸¶ó »ý°¢µç´Ù. (¿ªÀÚÁÖ:¸µÅ©°¡ ±úÁ®ÀÖ¾î ¿©±â¿¡¼­ ã±â ¹Ù¶õ´Ù. http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_2.html#SEC31) /* * Ed. note * "Reboant" ÀÌ ÀÛÀº ¸Þ¸ð -Os(ÃÖÀûÈ­µÈ ÄÄÆÄÀÏ)·Î ÀÎÇØ ¹Ï¾îÁöÁö ¾ÊÀ»Á¤µµ·Î * ÁÁÀº°á°ú¸¦ º¸¿©Áá´Ù. ´ç½ÅÀÌ ¿øÇÏ´Â ¸¸ÀÏÀÌ ÀÛÀº ¿ë·® º¸´Ù´Â ºü¸¥¼öÇà * ¼Óµµ ¶§¹®¿¡.. ÀÌ°ÍÀ» Çغ¸°í ½ÍÀ»Áö ¸ð¸¥´Ù. */ ÄÄÆÄÀϵÇÁö ¾Ê°í "segmentation fault, core dumped" ¶ó´Â ¿¡·¯¸Þ½ÃÁö¸¦ º¸°Ô µÈ´Ù¸é, ÀÌ°ÍÀº ¾Æ¸¶ ÄÄÆÄÀÏ ¼³Á¤¹®Á¦ ¶§¹®ÀÏ°ÍÀÌ´Ù . -03¿¡¼­ -02·Î Á»´õ ³·Àº ´Ü°èÀÇ ¼³Á¤À» ÇÏ°í ÄÄÆÄÀÏÀ» ½ÃµµÇغÁ¶ó. -0ÀÎ »óȲ¿¡¼­µµ ÄÄÆÄÀÏ µÇÁö¾ÊÀ¸¸é, Ưº°ÇÑ ¼³Á¤¾øÀÌ ¼öÇàÇغÁ¶ó. ¶ÇÇÑ -marchÀÇ °ªµµ ¼öÁ¤ÇØ ºÁ¶ó Compiler´Â ¾î¶² Çϵå¿þ¾î¿¡´Â ¸Å¿ì ¹Î°¨Çϱ⠶§¹®¿¡ ¸Å¿ì Á¤È®ÇÑ ¼³Á¤ÀÌ ÇÊ¿äÇÏ´Ù. ¶ÇÇÑ ³ôÀº ´Ü°èÀÇ ÃÖÀûÈ­¼³Á¤¿¡¼­(¿¹¸¦ µé¸é -03°ú °°Àº ¼¼Æÿ¡¼­) ¸Þ¸ð¸®ÀÇ ¼º´ÉÀÌ ¶³¾îÁø´Ù¸é, ¿¡·¯°¡ ³¯°ÍÀÌ´Ù. ½ÇÁ¦·Î -03 ¿É¼ÇÀ» ÁÖ°í ÄÄÆÄÀÏÇÒ¶§ ¾Æ¹«·±¹®Á¦¾ø¾ú¾îµµ, ¾ÆÁÖ ¹®Á¦°¡ ¾ø´Â°ÍÀº ¾Æ´Ï´Ù. ´Ù¸¥ ¹®Á¦´Â Glibc¸¦ÀÌ¿ëÇÏ´ÂBinutilsÀÇ ¹öÁ¯ Â÷ÀÌ·Î ÀÎÇØ ¹ß»ýµÉ¼öµµ ÀÖ´Ù. (most noticable in RedHat because RedHat often uses beta software which aren't always very stable. "RedHat likes living on the bleeding edge, but leaves the bleeding up to you"( lfs-discuss mailinglist¿¡¼­ ÀοëÇÑ ±ÛÀÌ´Ù). ¡ØThis document is distributed under the terms of the GNU Free Documentation License. You should have received a copy along with it. If not, it is available from http://www.fsf.org/licenses/fdl.html. ¡Ø¿ø¹® : http://hints.linuxfromscratch.org/hints/optimization.txt ¡Ø¹ø¿ª¹®:http://pulix.org/~zenky77/optimize.txt