【 tulaoshi.com - 编程语言 】
                             
                              gcc在不同的体系机构/CPU下编译效果有不同,需要使用不同的编译参数达到最佳效果。  
  一、1.2版(gcc 2.9.x版)  
  -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=i486 -O3 -pipe -fomit-frame-pointer"  
  Pentium, Pentium MMX+, Celeron (Mendocino) (Intel)
  CHOST="i586-pc-Linux-gnu"
  CFLAGS="-march=pentium -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=pentium -O3 -pipe -fomit-frame-pointer"  
  Pentium Pro/II/III/4, Celeron (Coppermine), Celeron (Willamette?) (Intel)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=i686 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=i686 -O3 -pipe -fomit-frame-pointer"  
  Eden C3/Ezra (Via)
  CHOST="i586-pc-linux-gnu"
  CFLAGS="-march=i586 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=i586 -O3 -pipe -fomit-frame-pointer"  
  Quote : I did the original gentoo install using 1.2, with gcc 2.95 using -march=i586. i686 won't work.  
  K6 or beyond (AMD)
  CHOST="i586-pc-linux-gnu"
  CFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"  
  (A Duron will report "Athlon" in its /proc/cpuinfo)  
  Athlon (AMD)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"  
  For the following, i don't know of any flag that enhance performances..., do you ?  
  PowerPC
  CHOST="powerpc-unknown-linux-gnu"
  CFLAGS="-O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-O3 -pipe -fomit-frame-pointer"  
  Sparc
  CHOST="sparc-unknown-linux-gnu"
  CFLAGS="-O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-O3 -pipe -fomit-frame-pointer"  
  Sparc 64
  CHOST="sparc64-unknown-linux-gnu"
  CFLAGS="-O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-O3 -pipe -fomit-frame-pointer"    
  二、1.4版(gcc 3.x版):    
  i386 (Intel), do you really want to install gentoo on that ?
  CHOST="i386-pc-linux-gnu"
  CFLAGS="-march=i386 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=i386 -O3 -pipe -fomit-frame-pointer"  
  i486 (Intel), do you really want to install gentoo on that ?
  CHOST="i486-pc-linux-gnu"
  CFLAGS="-march=i486 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=i486 -O3 -pipe -fomit-frame-pointer"  
  Pentium 1 (Intel)
  CHOST="i586-pc-linux-gnu"
  CFLAGS="-march=pentium -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=pentium -O3 -pipe -fomit-frame-pointer"  
  Pentium MMX (Intel)
  CHOST="i586-pc-linux-gnu"
  CFLAGS="-march=pentium-mmx -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=pentium-mmx -O3 -pipe -fomit-frame-pointer"  
  Pentium PRO (Intel)  
     CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=pentiumpro -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=pentiumpro -O3 -pipe -fomit-frame-pointer"  
  Pentium II (Intel)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"  
  Celeron (Mendocino), aka Celeron1 (Intel)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"  
  Pentium III (Intel)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"  
  Celeron (Coppermine) aka Celeron2 (Intel)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"  
  Celeron (Willamette?) (Intel)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"  
  Pentium 4 (Intel)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"  
  Eden C3/Ezra (Via)
  CHOST="i586-pc-linux-gnu"
  CFLAGS="-march=i586 -m3dnow -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=i586 -m3dnow -O3 -pipe -fomit-frame-pointer"  
  quote : the ezra doesn't have any special instrUCtions that you could optimize for, just consider is a K6-3...basically
  a p2 with 3dnow  
  K6 (AMD)
  CHOST="i586-pc-linux-gnu"
  CFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"  
  K6-2 (AMD)
  CHOST="i586-pc-linux-gnu"
  CFLAGS="-march=k6-2 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=k6-2 -O3 -pipe -fomit-frame-pointer"  
  K6-3 (AMD)
  CHOST="i586-pc-linux-gnu"
  CFLAGS="-march=k6-3 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=k6-3 -O3 -pipe -fomit-frame-pointer"  
  Athlon (AMD)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=athlon -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=athlon -O3 -pipe -fomit-frame-pointer"  
  Athlon-tbird, aka K7 (AMD)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=athlon-tbird -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=athlon-tbird -O3 -pipe -fomit-frame-pointer"  
  Athlon-tbird XP (AMD)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"  
     CXXFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"  
  Athlon 4(AMD)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=athlon-4 -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=athlon-4 -O3 -pipe -fomit-frame-pointer"  
  Athlon XP (AMD)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"  
  Athlon MP (AMD)
  CHOST="i686-pc-linux-gnu"
  CFLAGS="-march=athlon-mp -O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-march=athlon-mp -O3 -pipe -fomit-frame-pointer"  
  603 (PowerPC)
  CHOST="powerpc-unknown-linux-gnu"
  CFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
  CXXFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"  
  603e (PowerPC)
  CHOST="powerpc-unknown-linux-gnu"
  CFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
  CXXFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"  
  604 (PowerPC)
  CHOST="powerpc-unknown-linux-gnu"
  CFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
  CXXFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"  
  604e (PowerPC)
  CHOST="powerpc-unknown-linux-gnu"
  CFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
  CXXFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"  
  750 aka as G3 (PowerPC)
  CHOST="powerpc-unknown-linux-gnu"
  CFLAGS="-mcpu=750 -O3 -pipe -fomit-frame-pointer
  -fsigned-char"
  CXXFLAGS="-mcpu=750 -O3 -pipe -fomit-frame-pointer
  -fsigned-char"  
  Note: do not use -march=  
  7400, aka G4 (PowerPC)
  CHOST="powerpc-unknown-linux-gnu"
  CFLAGS="-mcpu=7400 -O3 -pipe -fomit-frame-pointer
  -fsigned-char -maltivec"
  CXXFLAGS="-mcpu=7400 -O3 -pipe -fomit-frame-pointer
  -fsigned-char -maltivec"  
  Note: do not use -march=  
  7450, aka G4 second generation (PowerPC)
  CHOST="powerpc-unknown-linux-gnu"
  CFLAGS="-mcpu=7450 -O3 -pipe -fomit-frame-pointer
  -fsigned-char -maltivec"
  CXXFLAGS="-mcpu=7450 -O3 -pipe -fomit-frame-pointer
  -fsigned-char -maltivec"  
  Note: do not use -march=  
  PowerPC (If you don't know which one)
  CHOST="powerpc-unknown-linux-gnu"
  CFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
  CXXFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"  
  Sparc
  CHOST="sparc-unknown-linux-gnu"
  CFLAGS="-O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-O3 -pipe -fomit-frame-pointer"  
  Sparc 64
  CHOST="sparc64-unknown-linux-gnu"
  CFLAGS="-O3 -pipe -fomit-frame-pointer"
  CXXFLAGS="-O3 -pipe -fomit-frame-pointer"