본문 바로가기

컴퓨터

MacOS GNU GCC 설치하기

Mac에서 기본적으로 제공되는 컴파일러는 Apple LLVM(clang)이다.

gcc, g++를 입력하면 자동으로 clang이 실행된다.

사용해보니 컴파일 에러가 발생했을 때 더 자세한 내용을 알려주거나 오타를 잡아주는 등의 gnu gcc보다 편리한 점이 있지만, 일단 평소 평소 사용하는 환경에 맞추기 위해 gnu gcc를 설치하기로 했다.

(사실 gprof 쓰려는데, 다른 툴 사용법 익히기는 귀찮고,, 겸사겸사...)


다행히도 얼마 전에 Mac에 gcc를 설치하고 그 과정을 포스트한 분이 계셔서 참고했다. 예! 한글이라 더좋다.

http://aiceru.blogspot.kr/2016/03/mac-os-x-gnu-gcc.html


또는 아래 링크를 참고해도 좋을듯.

https://solarianprogrammer.com/2015/05/01/compiling-gcc-5-mac-os-x/


일단 내가 쓰는 Mac 버전은 macOS Sierra 10.12.4 이다.

gcc설치를 위해 아래의 라이브러리를 내려받았다.

1.  gcc-6.3.0    - https://gcc.gnu.org/mirrors.html

2. mpc-1.0.3    - http://www.multiprecision.org/index.php?prog=mpc&page=download

3. mpfr-3.1.5.   - http://www.mpfr.org/mpfr-current/#download

4. gmp-6.1.2     - https://gmplib.org

5. isl-0.16.1      - ftp://gcc.gnu.org/pub/gcc/infrastructure/



** 인터넷 돌아다니면서 읽다 보니 isl 버전 관련해서 쓴 글이 있었다. 최신 버전을 받았더니 gcc 빌드 중에 에러가 발생해서, 일부러 지난 버전을 받아서 성공했다.. 는 내용인데, 꽤 오래 전에 쓴 글이라 일단 무시하고 모두 최신 버전을 받았다.


** gmp 링크를 따라가면 위에 .lz파일로 다운받기가 있는데, 그냥 쉽게 압축 풀려면 밑으로 조금만 더 내려서 .bz2 를 받아주자.


** isl 링크를 그대로 클릭하면 finder에서 열기가 나오는데, 내 경우에는 문제가 발생했다. finder로 ftp에 접속한 뒤 몇 초 있다가 finder가 맛이 가고, 앱 재시작도 안되고, 한참 그러다가 갑자기 재부팅된다. 한번도 아니고 두번이나...  그래서 다른 ftp 클라이언트로 접속해서 받았다.


그리고... 위의 링크대로 쭉 따라해보자. 어려운것도 아니고...



1. Build GMP

cd gmp-6.1.2

mkdir build && cd build

../configure --prefix=/usr/local/gcc-6.3.0 --enable-cxx

...

make -j 4

...

sudo make install

...

make check

마지막 명령어는 라이브러리가 제대로 설치 되었는지 확인하는거 같다.



2. Build MPFR


cd ../../mpfr-3.1.5

mkdir build && cd build

../configure --prefix=/usr/local/gcc-6.3.0 --with-gmp=/usr/local/gcc-6.3.0

...

make -j 4

...

sudo make install


3. Build MPC


cd ../../mpc-1.0.3

mkdir build && cd build

../configure --prefix=/usr/local/gcc-6.3.0 --with-gmp=/usr/local/gcc-6.3.0 --with-mpfr=/usr/local/gcc-6.3.0

...

make -j 4

...

sudo make install


일단 여기까지 해서 gcc를 build하기 위한 세 가지 라이브러리 설치가 끝났다. Graphite loop optimization을 위해서는 isl도 설치하면 좋다는거 같은데... 일단 그대로 따라한다.


4. Build ISL (maybe optional??)


cd ../../isl-0.16.

mkdir build && cd build

../configure --prefix=/usr/local/gcc-6.3.0 --with-gmp-prefix=/usr/local/gcc-6.3.0

...

make -j 4

...

sudo make install


5. Build GCC


cd ../../gcc-6.3.0

mkdir build && cd build

../configure --prefix=/usr/local/gcc-6.3.0 --enable-checking=release --with-gmp=/usr/local/gcc-6.3.0 --with-mpfr=/usr/local/gcc-6.3.0 --with-mpc=/usr/local/gcc-6.3.0 --enable-languages=c,c++,fortran --with-isl=/usr/local/gcc-6.3.0 --program-suffix=-6.3.0



--enable-languages

컴파일 가능한 언어 지정. fortran 필요 없을거 같지만, 일단 그대로 따라하기로 했으니 썼다. (사실 all 할까 고민함)  https://gcc.gnu.org/install/configure.html  참조.


--program-suffix 

그냥 gcc를 실행하면 clang이 invoke되고, gcc-6.3.0이라고 풀네임을 입력해야(-6.3.0으로 옵션을 줬으니) gnu gcc가 invoke되도록 함.




이제 위에서 했던거랑 똑같이 make해주자.

make -j 4


오래걸린다....  내 맥북(i7-6700HQ @ 2.6GHz)에서는 약 45분정도 걸렸다.

sudo make install


마지막으로, ~/.bashrc 또는 ~/.bash_profile.. 등 맥이 처음 켜질 때 읽는 파일에 다음을 추가하고 source하면...!

export PATH=/usr/local/gcc-6.3.0/bin:$PATH


이제 gcc-6.3.0을 입력하면 gnu gcc가 실행된다.

그냥 gcc로 gnu gcc를 실행하려면 아까 gcc configure에서 suffix 옵션을 주지 않고 진행하거나, alias를 걸어주면 될 듯 하다.

alias gcc=gcc-6.3.0



아..근데 gprof가 원래 맥에서 안되는거였나보다.. 

어디선가 돌아다니다가 clang에서 안되는거라고 잘못읽어서 뻘짓한거같다...

어쩐지 -pg 옵션을 줘도 gmon.out이 안나오더라...ㅠㅠ