 How do you compile and link a program that's spread out across several header and source files? If you're using a high-powered integrated development environment like Eclipse or NetBeans, you can create a project that contains all your files. Select the Build option, and the IDE will execute the commands needed to compile all the files that have been modified and link them into a runnable program. Then click the Run button, and there's the output of the program. However, if you're using an IDE like Genie, you need to do the build manually. In this video, we're presuming that all the files are in the same directory. On Macintosh and Linux, open up a terminal application. I'm using Linux here, and change the directory to where you have all your files. Then type a command like this, which we're going to look at one piece at a time. Start with the name of the compiler you're using. In this case, GCC. If you're using the Clang compiler, type Clang instead. Anything starting with a hyphen is a compiler option. The dash capital W option means display warnings, and the all means exactly that. Display any and all warnings that apply when compiling the program. Follow this option with the names of your C files. The next option, dash O, stands for output. It gives the name where the resulting compiled and linked program will be saved. By convention on Mac and Linux, you don't add .exe at the end of a program name. Finally, because this program uses math.h, you have to use this option to tell the linker to include the math library. Here's the command again with all its parts, and here it is in action. GCC with all warnings, the names of our files, our output file will be called test times, and we'll link in the math library. As with all Linux commands, no news is good news. When everything is successful, you return to the prompt. The only time you see anything is if there's an error. To run the program, you start with .slash. That means look in the current directory and follow it with the name of the file you want to execute. The .slash is necessary to tell the shell where to find the file, and there's the output. If you're on Windows, you can compile from the command prompt, or from Windows 10, you can use PowerShell. From the command prompt, here's what it looks like. We'll change our directory to documents backslashmulti-file, which is where all our source files are residing at the moment, and then we'll type in our command, GCC, all warnings. The names of our source files will put our output to a file called testtimes.exe. By convention on Windows, we add .exe to file names, and we'll link the math library. When running the program, you don't need the .exe. Here's what it looks like in PowerShell. Again, I'm going to change directory, but this time I'm going to use the tab key to complete the file name for me. When I do that, you'll notice that PowerShell has added a .backslash at the beginning of the file. .backslash is the Windows equivalent of look in the current directory. I can now do my command. All warnings, and I'll make heavy use of my tab key. My output goes to testtimes.exe, and I'll link the math library. Just as with Mac and Linux, I have to tell PowerShell to look in the current directory when I run the program. For anything more complicated than this scenario, you may need to create a make file, which is described briefly in the book. But this is what you need to know to build a basic multi-source file C program.