How to Link 2 Source Code Files with C Programming

By Dan Gookin

The most basic multi-module monster project in C programming has two source code files. Each file is separate — written, saved, and compiled individually — but eventually brought together as one unit by the linker. The linker, which is part of the build process in Code::Blocks, is what creates a single program from several different modules.

What’s a module?

A module is a source code file and its compiled object file. Together, the source code and object files are a module. Then the various object files are linked to build a program. The entire operation starts with separate source code files.


#include <stdio.h>
#include <stdlib.h>
void second(void);
int main()
  printf("Second module, I send you greetings!n");
  return 0;

Exercise 1: Fire up a new project in Code::Blocks named ex2401. Create the project as you normally would: Type the source code from The main.c Source Code File into the editor as the contents of the main.c file. Save the file.

Don’t build yet! After all, the code references the second() function, which doesn’t seem to exist anywhere. It’s prototyped, as is required for any function that’s used in your code, but the second() function is found in another module. To create that module in Code::Blocks, follow these steps:

  1. Save the current project, ex2401.

  2. Choose File→New→Empty File.

  3. Click the Yes button when you’re prompted to add the file to the active project.

    The Save File dialog box appears.

  4. Type alpha.c as the filename and then click the Save button.

    The new file is listed on the left side of the Code::Blocks window, beneath the Sources heading where the main.c file is listed. A new tab appears in the editor window, with the alpha.c file ready for editing.


  5. Click the alpha.c tab to begin editing that file.

  6. Type the source code from The alpha.c Source Code File into the alpha.c file in Code::Blocks.

  7. Save the ex2401 project.

  8. Build and run.


#include <stdio.h>
void second(void)
  puts("Glad to be here!");

Here’s the output you should see in the test window on your computer:

Second module, I send you greetings!
Glad to be here!

The two source code files aren’t “glued together” by the compiler; each source code file is compiled individually. A separate object code file is created for each one: main.o and alpha.o. It’s these two object code files that are then linked together, combined with the C standard library, to form the final program.

  • The main module for a multi-module C program is traditionally named main.c. That’s probably why Code::Blocks names the first (and, often, only) project source code file main.c.

  • Only source code files contained within the same project — found beneath the Sources branch — are linked together.

  • To compile and link source code files in a terminal window, use the following command:

    gcc main.c alpha.c -o ex2401

    This command compiles the source code files main.c and alpha.c, links together their object files, and then creates as output (-o) the program file ex2401.