How can I compile and run C/C++ code in a Unix console or Mac terminal?

C++CMacosConsoleTerminal

C++ Problem Overview


How can I compile/run C or C++ code in a Unix console or a Mac terminal?

C++ Solutions


Solution 1 - C++

If it is a simple single-source program,

make foo

where the source file is foo.c, foo.cpp, etc., you don’t even need a makefile. Make has enough built-in rules to build your source file into an executable of the same name, minus the extension.

Running the executable just built is the same as running any program - but you will most often need to specify the path to the executable as the shell will only search what is in $PATH to find executables, and most often that does not include the current directory (.).

So to run the built executable foo:

./foo

Solution 2 - C++

gcc main.cpp -o main.out
./main.out

Solution 3 - C++

This is the command that works on all Unix machines... I use it on Linux/Ubuntu, but it works in OS X as well. Type the following command in Terminal.app.

g++ -o lab21 iterative.cpp

-o is the letter O, not zero

lab21 will be your executable file

iterative.cpp is your C++ file

After you run that command, type the following in the terminal to run your program:

./lab21

Solution 4 - C++

Two steps for me:

First:

make foo

Then:

./foo

Solution 5 - C++

All application execution in a Unix (Linux, Mac OS X, AIX, etc.) environment depends on the executable search path.

You can display this path in the terminal with this command:

> echo $PATH

On Mac OS X (by default) this will display the following colon separated search path:

> /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

So any executable in the listed directories can by run just by typing in their name. For example:

> cat mytextfile.txt

This runs /bin/cat and displays mytextfile.txt to the terminal.

To run any other command that is not in the executable search path requires that you qualify the path to the executable. So say I had an executable called MyProgram in my home directory on Mac OS X I can fully qualify it like so:

> /Users/oliver/MyProgram

If you are in a location that is near the program you wished to execute you can qualify the name with a partial path. For example, if MyProgram was in the directory /Users/oliver/MyProject I and I was in my home directory I can qualify the executable name like this, and have it execute:

> MyProject/MyProgram

Or say I was in the directory /Users/oliver/MyProject2 and I wanted to execute /Users/oliver/MyProject/MyProgram I can use a relative path like this, to execute it:

> ../MyProject/MyProgram

Similarly if I am in the same directory as MyProgram I need to use a "current directory" relative path. The current directory you are in is the period character followed by a slash. For example:

> ./MyProgram

To determine which directory you are currently in use the pwd command.

If you are commonly putting programs in a place on your hard disk that you wish to run without having to qualify their names. For example, if you have a "bin" directory in your home directory for regularly used shell scripts of other programs it may be wise to alter your executable search path.

This can be does easily by either creating or editing the existing .bash_profile file in your home directory and adding the lines:

#!/bin/sh
export PATH=$PATH:~/bin

Here the tilde (~) character is being used as a shortcut for /Users/oliver. Also note that the hash bang (#!) line needs to be the first line of the file (if it doesn't already exist). Note also that this technique requires that your login shell be bash (the default on Mac OS X and most Linux distributions). Also note that if you want your programs installed in ~/bin to be used in preference to system executables your should reorder the export statement as follows:

export PATH=~/bin:$PATH

Solution 6 - C++

Do all of this in "Terminal".

To use the G++ compiler, you need to do this:

  1. Navigate to the directory in which you stored the *.cpp file.

    cd ~/programs/myprograms/ (the ~ is a shortcut for your home, i.e. /Users/Ryan/programs/myprograms/, replace with the location you actually used.)

  2. Compile it

    g++ input.cpp -o output.bin (output.bin can be anything with any extension, really. Extension .bin is just common on Unix.)

    There should be nothing returned if it was successful, and that is okay. Generally you get returns on failures.

    However, if you type ls, you will see the list of files in the same directory. For example, you would see the other folders, input.cpp and output.bin

  3. From inside the directory, now execute it with ./outbut.bin

Solution 7 - C++

A compact way to go about doing that could be:

make foo && ./$_

It is nice to have a one-liner so you can just rerun your executable again easily.

Solution 8 - C++

Assuming the current directory is not in the path, the syntax is ./[name of the program].

For example ./a.out

Solution 9 - C++

To compile C or C++ programs, there is a common command:

  1. make filename

  2. ./filename

make will build your source file into an executable file with the same name. But if you want to use the standard way, You could use the gcc compiler to build C programs and g++ for C++.

For C:

gcc filename.c

./a.out

For C++:

g++ filename.cpp

./a.out

Solution 10 - C++

Add the following to get the best warnings, and you will not regret it. If you can, compile using WISE (warning is error).

- Wall -pedantic -Weffc++ -Werror

Solution 11 - C++

Step 1 - create a cpp file using the command

touch test.cpp

Step 2 - Run this command

g++ test.cpp

Step 3 - Run your cpp file

./a.out

Solution 12 - C++

I am on a new MacBook Pro with the Apple M1 Pro chip. I have my Xcode installed - both IDE and command line tools. This is how it worked for me:

g++ one.cpp -o one

./one

Solution 13 - C++

Use a makefile. Even for very small (= one-file) projects, the effort is probably worth it because you can have several sets of compiler settings to test things. Debugging and deployment works much easier this way.

Read the make manual. It seems quite long at first glance, but most sections you can just skim over. All in all, it took me a few hours and made me much more productive.

Solution 14 - C++

I found this link with directions:

http://www.wesg.ca/2007/11/how-to-write-and-compile-c-programs-on-mac-os-x/

Basically you do:

gcc hello.c
./a.out (or with the output file of the first command)

Solution 15 - C++

Just enter in the directory in which your .c/.cpp file is.

For compiling and running C code.

gcc filename.c
./a.out filename.c

For compiling and running C++ code.

g++ filename.cpp
./a.out filename.cpp

Solution 16 - C++

In order to compile and run C++ source code from a Mac terminal, one needs to do the following:

  1. If the path of .cpp file is somePath/fileName.cpp, first go the directory with path somePath
  2. To compile fileName.cpp, type c++ fileName.cpp -o fileName
  3. To run the program, type ./fileName

Solution 17 - C++

Running a .C file using the terminal is a two-step process. The first step is to type gcc in the terminal and drop the .C file to the terminal, and then press Enter:

gcc /Desktop/test.c

In the second step, run the following command:

~/a.out

Solution 18 - C++

For running C++ files, run the below command, assuming the file name is "main.cpp".

  1. Compile to make an object file from C++ file.

    g++ -c main.cpp -o main.o
    
  2. Since #include <conio.h> is not supported on macOS, we should use its alternative which is supported on Mac. That is #include <curses.h>. Now the object file needs to be converted to an executable file. To use file curses.h, we have to use library -lcurses.

    g++ -o main main.o -lcurses
    
  3. Now run the executable.

    ./main
    

Solution 19 - C++

You need to go into the folder where you have saved your file. To compile the code: gcc fileName You can also use the g++ fileName This will compile your code and create a binary. Now look for the binary in the same folder and run it.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionP-AView Question on Stackoverflow
Solution 1 - C++camhView Answer on Stackoverflow
Solution 2 - C++Andrey NeverovView Answer on Stackoverflow
Solution 3 - C++KomengemView Answer on Stackoverflow
Solution 4 - C++Victor AugustoView Answer on Stackoverflow
Solution 5 - C++orjView Answer on Stackoverflow
Solution 6 - C++nerdwallerView Answer on Stackoverflow
Solution 7 - C++markthethomasView Answer on Stackoverflow
Solution 8 - C++P-AView Answer on Stackoverflow
Solution 9 - C++Yogesh NogiaView Answer on Stackoverflow
Solution 10 - C++NazgobView Answer on Stackoverflow
Solution 11 - C++Ashish KumarView Answer on Stackoverflow
Solution 12 - C++Raj BigDataView Answer on Stackoverflow
Solution 13 - C++Konrad RudolphView Answer on Stackoverflow
Solution 14 - C++Srini KadamatiView Answer on Stackoverflow
Solution 15 - C++Shiv PrakashView Answer on Stackoverflow
Solution 16 - C++AlperView Answer on Stackoverflow
Solution 17 - C++Himanshu MahajanView Answer on Stackoverflow
Solution 18 - C++Teena nath PaulView Answer on Stackoverflow
Solution 19 - C++Shubham SauravView Answer on Stackoverflow