g++ -g -O2 -std=c++11 -pthread -march=native test.cpp -o test -lntl -lgmp -lm
The meaning of parameters in g++ command line:
-
-g:
which means that you can use gdb command to debug your code line by line
Produce debugging information in the operating system’s native format
(stabs, COFF, XCOFF, or DWARF).GDB can work with this debugging information.
On most systems that use stabs format, -g enables use of extra debugging information that only
GDB can use; this extra information makes debugging work better in GDB but probably makes other
debuggers crash or refuse to read the program. If you want to control for certain whether to
generate the extra information, use -gstabs+, -gstabs, -gxcoff+, -gxcoff, or -gvms (see below).
- -O2 is kind of options which control various sorts of optimizations.Without any optimization option, the compiler’s goal is to reduce the cost of compilation and to make debugging produce the expected results. Statements are independent: if you stop the program with a breakpoint between statements, you can then assign a new value to any variable or change the program counter to any other statement in the function and get exactly the results you expect from the source code.
Optimize even more. GCC performs nearly all supported optimizations that do not involve a
space-speed tradeoff. As compared to -O, this option increases both compilation time and
the performance of the generated code.
-O2 turns on all optimization flags specified by -O. It also turns on the following
optimization flags:
3.-std=c++11 :Determine the language standard.
4.** -pthread**:Define additional macros required for using the POSIX threads library. You should use this option consistently for both compilation and linking. This option is supported on GNU/Linux targets, most other Unix derivatives, and also on x86 Cygwin and MinGW targets.
5.-march=native:cannot specify the meaning of it.
g++ test.cpp -o test -lntl -lgmp could build and compile the test.cpp