GCC compilation command

Source: Internet
Author: User

GCC options
GCC has more than 100 compilation options available. many of these options may never be used, but some of the main options will be frequently used. many GCC options include more than one character. therefore, you must specify the respective characters for each option, and, just like most Linux commands, you cannot separate the characters with a group of options. for example, the following two commands are different:
Gcc-p-g test. c

Gcc-PG test. c
The First Command tells GCC to compile test. in C, the profile information is created for the prof command and the debugging information is added to the executable file. the second command only tells GCC to create profiling information for the GPROF command.

When you do not need any options to compile a program, GCC will create (assuming the compilation is successful) a program named. out executable file. for example, the following command will generate. out file:
GCC test. c
You can use the-O compilation option to specify a file name for the generated executable file instead of. out. for example. the C program of C is compiled into an executable file named count. Enter the following command:
Gcc-O count. c

Note: When you use the-O option,-o must be followed by a file name.

-C only compiles and generates the target file.

--------------------------------------------------------------------------------
GCC and G ++ are the gnu c & C ++ compiler gcc/g ++. A total of four steps are required during compilation.

1. pre-process and generate the. I file [pre-processor CPP]
2. Do not convert the pre-processed files into assembly languages to generate the file. s [compiler egcs]
3. a. o file is generated by means of compilation into the target code (machine code) [assembler as]
4. Connect the target code to generate an executable program [linker ld]
[Parameter Details]
-X language filename
Set the language used by the file to make the suffix invalid and valid for multiple later versions.
The suffix name is. C, and C ++ suffix is. C or. cpp. If you are very personalized, decide the suffix of your C code file.
The name is. Pig Haha. You need to use this parameter. This parameter applies to all file names after it, unless
Use of the next parameter.
Can I use the following parameters?
'C', 'Objective-C', 'c-header', 'c ++ ', 'cpp-output', 'Explorer', and 'a
Ssembler-with-CPP '.
You can understand English.
Example usage:
Gcc-x C hello. Pig

-X none filename
Turn off the previous option, that is, let GCC automatically identify the file type based on the file name suffix
Example usage:
Gcc-x C hello. Pig-x none hello2.c

-C
Only activate preprocessing, compilation, and assembly, that is, he only makes the program into an OBJ file.
Example usage:
Gcc-C hello. c
It will generate the. o obj file
-S
Only activating preprocessing and compilation means compiling a file into assembly code.
Example usage
Gcc-s hello. c
It will generate the. s assembly code. You can view it in a text editor.
-E
Only activate preprocessing. If this file is not generated, You need to redirect it to an output file.
Example usage:
Gcc-e hello. c> pianoapan.txt
Gcc-e hello. c | more
Let's take a look. A Hello word should also process 800 lines of code.
-O
Specify the target name. By default, the GCC compiled file is a. Out, which is hard to hear. If you feel the same with me
, Get rid of it, haha
Example usage
Gcc-O hello.exe hello. C (Oh, Windows is used to it)
Gcc-O hello. ASM-s hello. c
-Pipe
Using pipelines instead of temporary files during compilation may cause some problems when using non-GNU compilation tools.
Gcc-pipe-O hello.exe hello. c
-ANSI
Disable features incompatible with ansi c in gnu c and activate the proprietary features of ansi c (including disabling some ASM INL
INE typeof keywords, as well as preprocessing macros such as UNIX and VAX,
-Fno-ASM
This option is part of the feature that implements the ANSI option. It prohibits the use of ASM, inline, and typeof as keywords.

-Fno-strict-Prototype
It only works for G ++. With this option, G ++ considers that there is no explicit parameter pair for functions without parameters.
Instead of having no parameters.
Whether this parameter is used or not, GCC considers that there is no explicitly stated type for a function without parameters.


-Fthis-is-varialble
Is to align with the traditional C ++, you can use this when the general variable is used.

-Fcond-Mismatch
The second and third parameter types of conditional expressions do not match. The expression value is of the void type.

-Funsigned-Char
-Fno-signed-Char
-Fsigned-Char
-Fno-Unsigned-Char
These four parameters are used to set the char type and decide to set the char type to unsigned char (the first two parameters
Number) or signed Char (the last two parameters)

-Include File
Contains a code. Simply put, a file can be used to set
The function is equivalent to using # include <FILENAME> in the code.
Example usage:
GCC hello. C-include/root/pianopan. h

-Imacros File
Extends the macro of the file to the input file of GCC/g ++. The macro definition does not appear in the input file.

-Dmacro
Equivalent to # define macro in C

-Dmacro = defn
Equivalent to # define macro = defn in C

-Umacro
Equivalent to # UNDEF macro in C
-UNDEF
Cancel definition of any non-standard macros

-Idir
When you use # include "file", GCC/g ++ first searches for the header file in the current directory, as shown in figure
If it is not found, he will return to the default header file directory. If-I is used to specify the directory
Go back to the directory you created, and then find it in the regular order.
For # include <File>, GCC/g ++ searches for the directory specified by-I, and fails to find the directory.
Saved header file directory search

-I-
Is to cancel the function of the previous parameter, so it is generally used after-Idir

-Idirafter dir
An error occurred while searching in the-I directory.

-Iprefix prefix
-Iwithprefix dir
Generally, if-I Directory Search fails, it will be searched under prefix + dir

-Nostdinc
Enable the compiler to no longer find the header file in the system's default header file directory. It is generally used in conjunction with-I and explicitly limits the header.
File Location

-Nostdin C ++
It is specified that the search is not in the standard path specified by G ++, but is still in another path. This option is in the creation of libg ++ Library
Use

-C
During pre-processing, do not delete the annotation information, which is generally used with-E. Sometimes the analysis program is very convenient to use.


-M
Generate file association information. You can use gcc-M hello. C to include all the source code that the target file depends on.
It's easy to test.

-Mm
It is the same as the one above, but it will ignore the dependency caused by # include <File>.

-MD
It is the same as-M, but the output will be imported into the. d file.

-MMD
It is the same as-mm, but the output will be imported into the. d file.

-Wa, Option
This option is passed to the assembler. If there is a comma in the option, the option is divided into multiple options.
And then pass it to the assembler.

-WL. Option
This option is passed to the connection program. If there is a comma in the option, the option is divided into multiple options.
And then pass it to the connected program.

-Llibrary
Library Used during compilation
Example usage
Gcc-lcurses hello. c
Compile the program using the ncurses Library

-Ldir
Specify the path of the database to be searched during compilation. For example, you can use your own library to create a directory. Otherwise
The compiler will only find it in the standard library directory. This DIR is the directory name.

-O0
-O1
-O2
-O3
The compiler has four levels of optimization options.-O0 indicates no optimization,-O1 indicates the default value, and-O3 indicates the highest optimization level.

-G
Only the compiler generates debugging information during compilation.

-Maid
This option claims debugging information in stabs format, but does not include GDB debugging information.

-Gstabs +
This option claims debugging information in stabs format and contains additional debugging information for GDB only.

-Ggdb
This option will generate debugging information that can be used by GDB as much as possible.
-Static
This option will disable the use of dynamic libraries. Therefore, compiled items are generally large and do not need any
The dynamic connection library can be run.
-Share
This option will try to use the dynamic library, so the generated file is small, but the system needs to use the dynamic library.
-Traditional
Try to make the compiler support the traditional C Language Features
[References]
-Linux/Unix Advanced Programming
Edited by zhongke Hongqi Software Technology Co., Ltd. Published by Tsinghua University Press
-GCC man page

[Changelog]
-2002-08-10
Ver 0.1 released the original document
-2002-08-11
Ver 0.11 modify document format
-2002-08-12
Server 0.12 adds parameters for static and dynamic libraries
-2002-08-16
Ver 0.16 adds four phases of GCC compilation commands
Run gcc/egcs
***********************
GCC is the gnu c and C ++ compilers. In fact, GCC can compile three languages: C, C ++, and O
Bject C (an object-oriented extension of C ). The GCC command can be used to compile and Connect C and C ++ at the same time.
Source program.
If you have two or a few C source files, you can easily use GCC to compile, connect, and generate
Execution file. For example, if you have two source files main. C and factorial. C
Generate a program for calculating factorial.
Code:
-----------------------
List factorial. c
-----------------------
Int factorial (int n)
{
If (n <= 1)
Return 1;
Else
Return factorial (n-1) * N;
}
-----------------------
Listing main. c
-----------------------
# Include <stdio. h>
# Include <unistd. h>
Int factorial (int n );
Int main (INT argc, char ** argv)
{
Int N;
If (argc <2)
{
Printf ("Usage: % S n \ n", argv [0]);
Return-1;
}
Else
{
N = atoi (argv [1]);
Printf ("factorial of % d is % d. \ n", N, factorial (n ));
}
Return 0;
}
-----------------------
The following command can be used to compile and generate executable files and execute programs:
$ Gcc-O factorial main. c factorial. c
$./Factorial 5
Factorial of 5 is 120.
GCC can be used to compile both C and C ++ programs. Generally, the C compiler uses the suffix of the source file.
To determine whether it is a C program or a C ++ program. In Linux, the extension of the C source file is. C, while the C ++ source file
The file suffix is. C or. cpp. However, the GCC command can only compile the C ++ source file, but cannot automatically
The library connection used by the ++ program. Therefore, the G ++ command is usually used to compile and connect the C ++ program.
GCC is automatically called to compile the program. Suppose we have the following C ++ source file (hello. C ):
# Include <iostream>
Void main (void)
{
Cout <"Hello, world! "<Endl;
}
You can call the G ++ command to compile, connect, and generate an executable file as follows:
$ G ++-O hello. c
$./Hello
Hello, world!
* ******************* Main options of GCC/egcs *********
Common GCC commands
Option description
-ANSI only supports the ANSI standard C syntax. This option will disable some features of gnu c,
For example, ASM or typeof keywords.
-C only compiles and generates the target file.
-Dmacro defines the macro with the string "1.
-Dmacro = defn: Define the macro with the string "defn.
-E only runs the C pre-compiler.
-G generates debugging information. The GNU Debugger can use this information.
-Idirectory: specify an additional header file to search for the path directory.
-Ldirectory: specify an additional function library to search for the path directory.
-Search for the specified library when connecting to llibrary.
-Msung optimizes code for 486.
-O file: generate the specified output file. Used to generate executable files.
-O0 is not optimized.
-O or-O1 optimized code generation.
-O2 is further optimized.
-O3 is further optimized than-O2, including the inline function.
-Shared shared object generation. It is usually used to create a shared library.
-Static prohibit the use of shared connections.
-Umacro undefines macro macros.
-W does not generate any warning information.
-Wall generates all warning information.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.