龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

不同的CPU下最佳编译参数

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
gcc在不同的体系机构/CPU下编译效果有不同,需要使用不同的编译参数达到最佳效果。 一、1.2版(gcc 2.9.x版) -pipe -fomit-frame-pointer" CXXFLAGS="-march=i486 -O3 -pipe -fomit-frame-pointer" Pentium, Pentium M

  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"

  

精彩图集

赞助商链接