Compiling with g++

g++ command is a GNU c++ compiler invocation command, which is used for preprocessing, compilation, assembly and linking of source code to generate an executable file. The different “options” of g++ command allow us to stop this process at the intermediate stage.

  • Check g++ compiler version information:
    g++ --version

  • Compile a CPP file to generate executable target file: g++ file_name command is used to compile and create an executable file a.out (default target name).

    Example: Given a simple program to print “Hello Geek” on standard output with file name hello.cpp

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // hello.cpp file
    #include <iostream>
    int main()
    {
        std::cout << "Hello Geek\n";
        return 0;
    }

    chevron_right

    
    

    g++ hello.cpp

    This compiles and links hello.cpp to produce a default target executable file a.out in present working directory. To run this program, type ./a.out where ./ represents present working directory and a.out is the executable target file.

    ./a.out

  • g++ -S file_name is used to only compile the file_name and not assembling or linking. It will generate a file_name.s assembly source file.

    Example:



    g++ -S hello.cpp

  • g++ -c file_name is used to only compile and assemble the file_name and not link the object code to produce executable file. It will generate a file_name.o object code file in present working directory.

    Example:

    g++ -c hello.cpp

  • g++ -o target_name file_name: Compiles and links file_name and generates executable target file with target_name (or a.out by default).

    Example:

    g++ -o main.exe hello.cpp

  • Compile and link multiple files: When -c flag is used, it invokes the compiler stage which translates source code to object code.When -o flag is used it links object code to create the executable file from file_name.o to a.out(default), multiples files may be passed together as arguments.

    Example:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // hello.cpp file
    #include "helloWorld.h"
    #include <iostream>
    int main()
    {
        std::cout << "Hello Geek\n";
        helloWorld();
        return 0;
    }

    chevron_right

    
    

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // helloWorld.cpp file
    #include <iostream>
    void helloWorld()
    {
        std::cout << "Hello World\n";
    }

    chevron_right

    
    

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // helloWorld.h file
    void helloWorld();

    chevron_right

    
    

    g++ -c helloWorld.cpp hello.cpp

    It compiles and creates object code for the files helloWorld.cpp and hello.cpp to helloWorld.o and hello.o respectively.

    g++ -o main.exe helloWorld.o hello.o

    It links the object codes helloWorld.o and hello.o to create an executable file main.exe

    ./main.exe

    It runs the executable file main.exe

  • g++ -Wall file_name: It prints all warning messages that are generated during compilation of file_name.

    Example:

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // hello.cpp file
    #include <iostream>
    int main()
    {
        int i;
        std::cout << "Hello Geek\n";
        return 0;
    }

    chevron_right

    
    

    g++ -Wall hello.cpp



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


2


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.