Showing posts with label fortran. Show all posts
Showing posts with label fortran. Show all posts

Sunday, November 17, 2013

GCC in OS X Mavericks

GCC in OS X Mavericks

GCC in OS X Mavericks


;; =================================================
;; εμαcs is ⎋[esc]⌘[meta]⌥[alt]⌃[ctrl]⇧[shift].
;; =================================================

This post is written with emacs org-mode.

Operating System Environments

  • Main- : OS X Mavericks (10.9)
  • Sub- : Debian GNU/Linux Wheezy (7.2)
  • Server: Debian GNU/Linux Squeeze || Lenny
  • Mobile: iOS 7.0.4

Installation of GCC(gcc48) via MacPorts

GCC is the GNU Compiler Collection, including front ends for C, C++, Objective-C, Objective-C++, Fortran, and Java. In OS X Mavericks a sort of gcc is preinstalled, but it is based on the Clang. This preinstalled gcc is not fully compatible to GCC(GNU Compiler Collection). Moreover it can compile only C, C++, and Objective-C. I need a Fortran compiler.

Up to OS X Mountain Lion (10.8), GCC(GNU Compiler Collection) has been easily installed via MacPorts. However, in OS X Mavericks (10.9) a GCC(GNU Compiler Collection) port seems to be broken. A problem may be caused by the broken libgcc port that is the mainly dependent port of gcc43, gcc44, gcc45, gcc46, gcc47, gcc48. It cannot be installed via sudo port install libgcc. I don't fully understand why, but my conclusion is that any GCC(GNU Compiler Collection) is not possible to be installed via MacPorts in the usual way.

Fortunately I found a way around. It works!!! If you install the port py27-scipy, then GCC(GNU Compiler Collection), particularly gcc48, is going to be automatically installed. (see here.)

The versions of Xcode and MacPorts in my OS X Mavericks are

The proper version of MacPorts for Mavericks is required to be installed or re-installed.

Procedure in Bash shell (Terminal.app)

  1. Install Xcode command line tools.
    $xcode-select --install
    
  2. Update ports and install py27-scipy for gcc48 to be installed.1 Be patient. It takes about 2 hours.
    $sudo port selfupdate
    $sudo port install py27-scipy
    
  3. Set gcc to gcc48. gcc_select port is required. To see all variants of installed gcc, run the second line.2
    $sudo port install gcc_select
    $port select --list gcc
    $sudo port select gcc mp-gcc48
    $hash gcc
    $gcc --version
    

    10900062763_f192a02d82.jpg

  4. Clean up temporary files used in the middle of a port installation procedure.(Optional)3
    $sudo port -f uninstall inactive
    $sudo port -f clean --all all
    

HaPPy coding.

Epilog

Mavericks upgrade 후에 자동으로 깔리는 gcc는 적응이 안된다. C의 경우 options를 조정하면 어찌어찌 그 전에 짜 놓은 C codes를 돌릴 수도 있을 것 같기도 한데… 이렇게 돌린 계산 값의 신뢰도도 조금 우려되고… 어차피 Java나 Fortran을 돌리려면 GCC(GNU Compiler Collection)가 필요하다.

지난 Posts(OS X Mavericks, OS X Mavericks: list of compatible applications)에서 $sudo port selfupdate 가 먹히는 것만 보고 MacPorts가 동작한다고 썼는데, 제대로 쓰려면 현재(<2013-11-17 Sun>) 홈페이지에서 배포하는 MacPorts-2.2.1-10.9-Mavericks.pkg 를 받아 설치를 해야 한다. 그전 버전을 지울 필요는 없었다. 몇몇 ports가 깨져있어서 gcc48 같은 것이 바로 안 깔리는데, 지원자에 자원 봉사자들로 이루어진 MacPorts project를 욕할 생각은 없다. 오히려 고마울 뿐이며, py27-scipy 를 깔면 gcc48이 깔린다는 것을 알아낸 능력자 분께도 감사할 따름이다. Clang… Apple과 Google이 만든 compiler라… 이게 얼마나 좋은 지는 내가 평가할 수는 없지만, 나에게는 이 현상이 Apple이 끊임없이 보여주고 있는 지난 OS 지원 미비 혹은 중단 의 연장선으로 비춰진다.


Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Footnotes:

1

See Ref. #1.

2

See Ref. #2 and #3.

3

See Ref. #4.

Created: 2013-11-17 Sun 10:36

Emacs 23.4.1 (Org mode 8.0.2)

Validate XHTML 1.0

Wednesday, July 27, 2011

[Mac Life - 02] gcc4.5(c/c++/fortran)


gcc4.5 (c/c++/fortran)

gcc45The GNU compiler collection으로, C, C++, Objective-C, Objective-C++, Fortran, 그리고 Java 언어 compilers를 모두 포함있다.

다른 언어는 잘 모르겠고, C/C++ Fortran, 설치하고 나면
$gcc [target.c]
$gfortran [target.f]
compile할 수 있다.

여기서는 예를 들어 설명할 일이 있을 경우는 C/C++Fortran 만 들기로 하겠다. 다른 언어에 대해서는 무지하므로 용서를 구한다.

gcc collectionMac에 설치하는 방법은 여러 개가 있으나, 가장 깔끔하게 설치하는 방법은 MacPort를 이용하기를 추천한다.

gcc45설치 방법 in Snow Leopard :

  1. 인스톨DVD에 포함된 XCode를 설치한다.
  2. MacPort를 설치한다. <--- 지난 포스팅 참조,
  3. Bash Shell (terminal application)을 열고 아래 순서로 타이핑한다.

$sudo port install gcc45
$sudo port install gcc_select

설치에 시간이 꽤 소요되므로 참고 기다리자.

  1. XCode를 깔면 사실 gcc apple version이 깔린다. 새로 설치한 gcc45default로 동작하게 하기 위해서 아래와 같이 bash shell에 타이핑한다.

$gcc_select -l <--- 가능한 버전을 보여준다.
$gcc_select mp-gcc45 <--- gcc45로 설치한 버전(mp-gcc45)default로 정하는 명령

제대로 동작했는지 확인해 보기 위해서는 'gcc_select' command를 실행하기 전후의 gcc version을 아래와 같이 확인해 보면 된다.

$gcc –version
$gfortran –version




알아두면 좋은 사항들 :

XCode만 깔면 gcc apple version이 깔린다고 언급했는데, 사실 바로 C/C++는 최소한 compile 할 수 있다. 그러나 본래 GNU에서 배포하는 gcc compiler collection에는 fortran compiler도 함께 들어있는데 XCode에는 없다.

MacPort를 통해서 gcc45만 깔아도 전혀 문제는 없으나 쓰기에 다소 불편하다. 왜냐하면 여기서 제공되는 compiler 이름이 그냥 gccgfortran이 아니라, 'gcc-mp-45' 'gfortran-mp-45' 라는 이름을 갖게 되는데, bash shell 차원에서 aliases를 만들어서 해결해도 되지만 혹시 업데이트라도 한다면 다시 aliases를 설정해줘야 하는 등의 불편함이 생긴다. 이를 쉽게 해결해 주는 것이 바로 gcc_select이다.



아래는 실제 bash shell(terminal)에서 보이는 화면의 일부이다.