Tôi không thể trả lời về -mfpu
cờ, nhưng tôi khuyên bạn nên thử những điều này trước:
-march=native
-mcpu=native
-mtune=native
Như đã báo cáo trong GCC manual page related to ARM options
:
-march = tự nhiên khiến trình biên dịch tự động phát hiện kiến trúc của máy tính xây dựng. Hiện tại, tính năng này chỉ được hỗ trợ trên Linux và không phải tất cả các kiến trúc đều được công nhận. Nếu tự động phát hiện không thành công, tùy chọn không có hiệu lực.
-mcpu = tự nhiên khiến trình biên dịch tự động phát hiện CPU của máy tính xây dựng. Hiện tại, tính năng này chỉ được hỗ trợ trên Linux và không phải tất cả các kiến trúc đều được công nhận. Nếu tự động phát hiện không thành công, tùy chọn không có hiệu lực.
-mtune = tự nhiên khiến trình biên dịch tự động phát hiện CPU của máy tính xây dựng. Hiện tại, tính năng này chỉ được hỗ trợ trên Linux và không phải tất cả các kiến trúc đều được công nhận. Nếu tự động phát hiện không thành công, tùy chọn không có hiệu lực.
Sau đó, bạn có thể thêm -Q -v
vào GCC flags
để xem những gì tối ưu hóa được kích hoạt và tiến hành tối ưu hóa thêm nếu cần thiết.
Đây là đầu ra sử dụng -march=native
với một chương trình mẫu trên Raspberry Pi của tôi:
#> gcc -march=native -Q -v test.c -o test
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.6/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Debian 4.6.3-8+rpi1' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 4.6.3 (Debian 4.6.3-8+rpi1)
COLLECT_GCC_OPTIONS='-march=native' '-Q' '-v' '-o' 'test' '-mfloat-abi=hard' '-mfpu=vfp'
/usr/lib/gcc/arm-linux-gnueabihf/4.6/cc1 -v -imultilib . -imultiarch arm-linux-gnueabihf test.c -dumpbase test.c -march=native -mfloat-abi=hard -mfpu=vfp -auxbase test -version -o /tmp/cc1rCJ4W.s
cc1: error: bad value (native) for -march switch
GNU C (Debian 4.6.3-8+rpi1) version 4.6.3 (arm-linux-gnueabihf)
compiled by GNU C version 4.6.3, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9
GGC heuristics: --param ggc-min-expand=38 --param ggc-min-heapsize=15522
ignoring nonexistent directory "/usr/local/include/arm-linux-gnueabihf"
ignoring nonexistent directory "/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../../arm-linux-gnueabihf/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/arm-linux-gnueabihf/4.6/include
/usr/local/include
/usr/lib/gcc/arm-linux-gnueabihf/4.6/include-fixed
/usr/include/arm-linux-gnueabihf
/usr/include
End of search list.
GNU C (Debian 4.6.3-8+rpi1) version 4.6.3 (arm-linux-gnueabihf)
compiled by GNU C version 4.6.3, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9
GGC heuristics: --param ggc-min-expand=38 --param ggc-min-heapsize=15522
options passed: -v -imultilib . -imultiarch arm-linux-gnueabihf test.c
-march=native -mfloat-abi=hard -mfpu=vfp
options enabled: -fauto-inc-dec -fbranch-count-reg -fcommon
-fdelete-null-pointer-checks -fdwarf2-cfi-asm -fearly-inlining
-feliminate-unused-debug-types -ffunction-cse -fgcse-lm -fident
-finline-functions-called-once -fira-share-save-slots
-fira-share-spill-slots -fivopts -fkeep-static-consts -fleading-underscore
-fmath-errno -fmerge-debug-strings -fmove-loop-invariants -fpeephole
-fprefetch-loop-arrays -freg-struct-return -fsched-critical-path-heuristic
-fsched-dep-count-heuristic -fsched-group-heuristic -fsched-interblock
-fsched-last-insn-heuristic -fsched-rank-heuristic -fsched-spec
-fsched-spec-insn-heuristic -fsched-stalled-insns-dep -fshow-column
-fsigned-zeros -fsplit-ivs-in-unroller -fstrict-volatile-bitfields
-ftrapping-math -ftree-cselim -ftree-forwprop -ftree-loop-if-convert
-ftree-loop-im -ftree-loop-ivcanon -ftree-loop-optimize
-ftree-parallelize-loops= -ftree-phiprop -ftree-pta -ftree-reassoc
-ftree-scev-cprop -ftree-slp-vectorize -ftree-vect-loop-version
-funit-at-a-time -fvar-tracking -fvar-tracking-assignments
-fzero-initialized-in-bss -mglibc -mlittle-endian -msched-prolog
Execution times (seconds)
TOTAL : 0.00 0.00 0.00 8 kB
gcc -mcpu=native -march=native -Q --help=target
cho tôi*** Error in
gcc ': miễn phí gấp đôi hoặc tham nhũng (trên cùng): 0x0020c5a8 *** `, trên Raspbian Jessie 4.4.13-v7 +, armv7l.