Bird
Raised Fist0
C++programming~10 mins

Compilation and execution process in C++ - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Compilation and execution process
Write C++ source code
↓
Preprocessing: handle #include, macros
↓
Compilation: convert code to assembly
↓
Assembly: convert assembly to machine code
↓
Linking: combine object files and libraries
↓
Executable file created
↓
Execution: OS loads and runs program
This flow shows how C++ source code is transformed step-by-step into a running program.
Execution Sample
C++
#include <iostream>
int main() {
  std::cout << "Hello!" << std::endl;
  return 0;
}
A simple C++ program that prints 'Hello!' to the screen.
Execution Table
StepProcessActionOutput/Result
1Write source codeCreate .cpp file with codeSource code file created
2PreprocessingExpand #include and macrosExpanded source code
3CompilationConvert expanded code to assemblyAssembly code generated
4AssemblyConvert assembly to machine codeObject file (.o) created
5LinkingCombine object files and librariesExecutable file created
6ExecutionOS loads executable and runs itProgram runs and prints 'Hello!'
7ExitProgram ends with return 0Process terminates normally
💡 Program finishes execution and returns control to OS
Variable Tracker
VariableStartAfter PreprocessingAfter CompilationAfter AssemblyAfter LinkingDuring ExecutionFinal
source_codeOriginal code textExpanded code textAssembly codeMachine codeExecutable fileLoaded in memoryProgram ends
outputNoneNoneNoneNoneNone"Hello!" printed"Hello!" printed
Key Moments - 3 Insights
Why do we need preprocessing before compilation?
Preprocessing handles #include and macros so the compiler sees full code without shortcuts, as shown in step 2 of the execution_table.
What is the difference between compilation and assembly?
Compilation translates code to assembly language (step 3), while assembly converts that assembly to machine code (step 4), preparing it for linking.
Why is linking necessary after assembly?
Linking combines all object files and libraries into one executable (step 5), so the program can run as a whole.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the output after the linking step?
AAssembly code generated
BExecutable file created
CSource code expanded
DProgram prints 'Hello!'
💡 Hint
Check row 5 in execution_table under Output/Result column
At which step does the program actually run and print output?
AExecution
BLinking
CCompilation
DPreprocessing
💡 Hint
Look at step 6 in execution_table where the program runs
If the source code has a syntax error, at which step will the process stop?
AAssembly
BPreprocessing
CCompilation
DLinking
💡 Hint
Syntax errors are caught during compilation, see step 3 in execution_table
Concept Snapshot
C++ compilation process:
1. Preprocessing: expands includes/macros
2. Compilation: source to assembly
3. Assembly: assembly to machine code
4. Linking: combine files to executable
5. Execution: OS runs program
Errors usually stop compilation.
Full Transcript
This visual shows how a C++ program goes from source code to running program. First, you write code. Then preprocessing expands includes and macros. Compilation turns code into assembly language. Assembly converts that to machine code in object files. Linking combines these into an executable file. Finally, the OS loads and runs the program, which prints output and ends. Errors like syntax mistakes stop the process during compilation. This step-by-step helps beginners see how code becomes a running program.

Practice

(1/5)
1. What is the main purpose of the compilation step in C++ programming?
easy
A. To convert human-readable code into machine code
B. To run the program and show output
C. To write the source code
D. To debug the program automatically

Solution

  1. Step 1: Understand what compilation means

    Compilation changes the C++ source code into machine code that the computer can understand.
  2. Step 2: Differentiate compilation from execution

    Execution runs the compiled machine code, but compilation itself only converts code.
  3. Final Answer:

    To convert human-readable code into machine code -> Option A
  4. Quick Check:

    Compilation = convert code [OK]
Hint: Compilation means converting code, not running it [OK]
Common Mistakes:
  • Confusing compilation with execution
  • Thinking compilation runs the program
  • Believing compilation writes code
2. Which of the following is the correct command to compile a C++ file named main.cpp using g++?
easy
A. compile main.cpp
B. run main.cpp
C. g++ main.cpp -o main
D. execute main.cpp

Solution

  1. Step 1: Recall the g++ compile command syntax

    The g++ compiler uses the command g++ filename.cpp -o outputname to compile.
  2. Step 2: Match the command to the options

    g++ main.cpp -o main matches the correct syntax to compile main.cpp into an executable named main.
  3. Final Answer:

    g++ main.cpp -o main -> Option C
  4. Quick Check:

    g++ compile command = g++ main.cpp -o main [OK]
Hint: Use g++ filename.cpp -o outputname to compile [OK]
Common Mistakes:
  • Using 'run' or 'execute' instead of g++
  • Omitting the -o option
  • Confusing compile and execute commands
3. Consider this C++ program:
#include <iostream>
int main() {
  std::cout << "Hello" << std::endl;
  return 0;
}

What will happen if you try to execute this program without compiling it first?
medium
A. The program will print "Hello"
B. You will get an error saying the program is not found
C. The program will compile automatically and then run
D. The program will run but show no output

Solution

  1. Step 1: Understand execution requires compiled program

    Execution runs the compiled machine code. Without compiling, no executable exists.
  2. Step 2: Predict what happens if you run without compiling

    Trying to run without compiling causes an error because the executable file is missing.
  3. Final Answer:

    You will get an error saying the program is not found -> Option B
  4. Quick Check:

    Execution needs compiled file = error if missing [OK]
Hint: You must compile before running, or get error [OK]
Common Mistakes:
  • Assuming execution auto-compiles
  • Expecting output without compiling
  • Thinking program runs but shows no output
4. You wrote this code in test.cpp:
#include <iostream>
int main() {
  std::cout << "Hi" << std::endl
  return 0;
}

When compiling, you get an error. What is the problem?
medium
A. Wrong return type for main
B. Missing #include <string>
C. Using std::cout incorrectly
D. Missing semicolon after std::endl

Solution

  1. Step 1: Check syntax line by line

    The line with std::cout << "Hi" << std::endl is missing a semicolon at the end.
  2. Step 2: Identify compilation error cause

    Missing semicolon causes a syntax error during compilation, stopping the process.
  3. Final Answer:

    Missing semicolon after std::endl -> Option D
  4. Quick Check:

    Semicolon missing = syntax error [OK]
Hint: Check for missing semicolons after statements [OK]
Common Mistakes:
  • Ignoring missing semicolon errors
  • Thinking #include <string> is needed here
  • Assuming return type is wrong
5. You have two C++ files: main.cpp and helper.cpp. You want to compile both and run the program. Which command correctly compiles and links both files into one executable named app?
hard
A. g++ main.cpp helper.cpp -o app
B. g++ main.cpp -o app helper.cpp
C. g++ -o app main.cpp; g++ helper.cpp
D. compile main.cpp helper.cpp app

Solution

  1. Step 1: Understand compiling multiple files

    To compile multiple source files together, list them all in one g++ command.
  2. Step 2: Check command syntax for linking

    g++ main.cpp helper.cpp -o app correctly lists both files and uses -o to name the executable.
  3. Final Answer:

    g++ main.cpp helper.cpp -o app -> Option A
  4. Quick Check:

    Multiple files compile = list all in one g++ command [OK]
Hint: List all source files in one g++ command to compile [OK]
Common Mistakes:
  • Trying to compile files separately without linking
  • Wrong order or syntax in command
  • Using unknown 'compile' command
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard