I code in C++, I was a Windows user, recently switched to mac. I downloaded gcc-10 from homebrew but still, whenever I compile on any editor, it got compiled with Clang. Then I deleted Clang by going to the directory where it was stored, I thought it will then compile with GCC. But now it stops compiling and throwing error messages.
Q.Why do I wish to use gcc instead of clang? -> Clang doesn't have <bits/stdc++.h> header and while solving one question I got to know it doesn't have unordered map also (read on StackOverflow later). -> And I don't know what more is not there in clang.
Can anyone please tell me ========================= either how to successfully compile C++ using gcc on MAC or can tell me all the difference between clang and gcc and how should I manage.
Even I talked with apple care for about 45 mins and they also don't know the solution.
I'm not sure about the case for M1. But if you type
gcc-10
in your shell and it shows gcc instead of clang, you can try to appendalias gcc='gcc-10'
to the end of your~/.bash_profile
.Actually, this doesn't work for me but after experimenting lot of stuff, I got the solution and a better understanding. I will share that in a different blog.
Thanks, for your reply:)
Looking forward to the blog
I'm not sure about M1 too, but in MacOS with Intel processors you can install gcc with
brew
package manager (something likebrew install gcc
). After that you can usegcc-10
located at/usr/loca/bin/gcc-10
.You are correct only. For M1,
gcc-10
is located at/opt/homebrew/bin/gcc-10
.Actually, there are many blogs and tutorials for Intel chips, and nothing available exactly for M1. I will upload one :)
brother, please upload the blog for M1. I am also facing the same problem.
g++-11
tog++
(this is for being able to callg++-11
with just typingg++
). In order to do it, just type in your terminalsudo ln -s $(which g++-11) /usr/local/bin/g++
.gcc
if you want to compile pure C code.If you have another version of GCC, you should put it instead of 11th.
I've tested it in an intel MacBookPro; it should work in M1 too.
Just one correction, use this in the 3rd step
/opt/homebrew/bin/gcc-10
, instead of/usr/local/bin/g++
.No. You didn't get it.
/usr/local/bin/g++
is the path where I want to putg++
. By other side,$(which g++-11)
would be that path you mentioned.Actually, in M1 you need to make a different path, named
/opt/homebrew/bin/gcc-10
.Remaining is same as you said.
Well, if you do exactly what I said, and then make sure you have
/usr/local/bin/
in thePATH
variable of your shell, then you should not worry about that different path you're saying.Just to make it clear:
sudo ln -s pathSource pathDestination
creates a symbolic link frompathSource
topathDestination
.$(which g++-10)
returns the path for the commandg++-10
, that in your case is/opt/homebrew/bin/g++-10
. So, the command I typed would be equivalent tosudo ln -s /opt/homebrew/bin/g++-10 /usr/local/bin/
, and that's perfectly fine because AFAIR/usr/local/bin/
is part of thePATH
variable by default.Ohh! I got your point.
We can do it anyways, both will work. thanks!
it's showing ln: /usr/local/bin/g++: No such file or directory
First, you need to install HomeBrew from https://brew.sh/
Then, run
brew install gcc
in the terminal.After installation completed, type
g++-11
in the terminal to see if the installation is successful.Finally, to use
g++
instead ofg++-11
, you need to type the following 4 commands:sudo ln -s /usr/local/bin/gcc-11 /usr/local/bin/gcc
sudo ln -s /usr/local/bin/g++-11 /usr/local/bin/g++
sudo ln -s /usr/local/bin/c++-11 /usr/local/bin/c++
sudo ln -s /usr/local/bin/cpp-11 /usr/local/bin/cpp
Now everything is OK.
Have you tried this method? The final commands are not working for me. Coz in my m1 mac, final destination of g++ file is /usr/bin instead of /usr/local/bin. Also operation to that directory is not permitted even after giving terminal full disk access.
Hey,
I use the M1 version of CLion.
The steps to install gcc via homebrew are pretty much the same as they always were.
To use gcc instead of clang within CLion, you can go to CLion -> Preferences -> Build, Execution, Deployment -> Toolchains -> C++ Compiler, and select the gcc compiler you downloaded.
When compiling i simply give it a command of gcc-11, instead of just gcc.. This way it executes with the homebrew gcc verison
Dear maverick_GOD and everone else who are using MAC, today I am gonna tell you the complete solution on how to use gcc compiler instead of using apple CLANG.
Go to brew official website and copy the code below "Install Homebrew", it will be like
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Open Terminal from the launchpad and paste it in your terminal and press enter to run it.
Now it will ask for the sudo password and then enter your mac password and then run it. Next it will ask press RETURN to continue and hit return. After then it will take take some time to download and install it on your mac.
After some time, it will show: View this image. Then copy the first code and then run it and then copy the second code and then run it. If it doesn't run reopen the terminal and then run it. It will show something like this.
Now reopen the terminal and type
brew
and press enter. It should show the list of all the brew commandsCongratulations now you have successfully installed brew on your mac.
Now its time to install GCC compiler in your MAC.
Open terminal and type
brew install gcc
Now type
g++-12 --version
and it will show the current version of the gcc compiler installed.Now type
g++ --version
it will show apple clang instead of gcc. Something like this.That means the current default compiler is clang not gcc. So we have to set it to GCC compiler as the default compiler.
Now type
cd /opt/homebrew/bin
, press enter and then typeln -s g++-12 g++
and press enter.Now again type
g++ --version
and it will show something like this. That means you have successfully installed gcc in your MAC and has been set as the default compiler.I will be pleased if this comment is helpful to anyone. Please share this commment so if anybody is trying to install gcc can see this solution. Thank you. Have a nice day:)
Thanks a lot bro :) Was very helpful. I was stuck with clang for months and could not use gcc. Also sometimes we've tried too many times , so in /opt/homebrew/bin, on doing ln -s g++-12 g++, we get output as ln: g++ already exists. So first I needed to remove already existing g++ file.
for that on terminal, first i typed cd /opt/homebrew/bin , pressinng enter then i removed existing file by typing sudo rm g++ , pressed enter then I followed your steps from no. 12 from typing ln -s g++-12 g++ then enter And it worked ...
Thanks again
i already had g++ was so confused but your comment solved my problem alot of thanks to you
it was very helpful.. thanks!
When I try to write g++-11 in my terminal it shows "Command not found" What should I do now
First check which gcc/g++ version has been installed using brew. To do that, run brew install gcc again to check which version has been installed. Then append the g++/gcc command with the version to compile your code with the new compiler installed. As of today's date, the latest version installed on my machine is 13.
So, the command looks like g++-13 --version.
I have found this tutorial I think I am a little late but still for newcomers it would be useful https://youtu.be/wY24ehH6mC0?si=s-24fnTVwDj1Dbio Do everything the video says and it will guaranteed work
i got a new mac tdy and i am so lucky i found this! only thing was you have to do gcc-14 instead of gcc-11, bcz thats the new version. other than that this works.