Tag Archives: ln

Xcode集中連載(5):Xcode 4.3.3 にGCCをインストール

3
Filed under Xcode
Tagged as , , , , ,

Xcodeについての集中連載第5回。
現在最新のXcodeでは二つのコンパイラが指定できます。LLVM GCC 4.2と、LLVM Compilerです。
Xcodeも3.xまではメインのコンパイラはGCC 4.2でしたが、Xcode 4ではデフォルトでは選択できません。
それでも諸事情からGCCを使いたい、という場合がありますので、本エントリではその手順、つまりXcode4でGCCを使えるようにする手順について説明します。

これまでのXcodeについての集中連載

LLVMについてザックリと

最近のXcodeでコンパイラでデフォルトに指定されているLLVM GCCは、これまでのGCCとは違います。

もちろん、LLVM GCCとLLVM Compilerは違います。
この違いは、コンパイル時間から生成バイナリ、実行速度まで変わってきますので、設定手順の前に概要を説明しておきます。違いは分かるという方は次の項目からお読みください。
LLVMとは、Low Level Virtual Machineの略で、LLVM Developer Groupは、GCCとは違う新しいコンパイラ基盤を提供しています。

コンパイラは大きく二つの環境を機能を提供しています。

  • パーサー (Parser)
  • コード生成 (Code Generation)

この組み合わせが幾つかあり、GCCのパーサーと、LLVMのコード生成部分を組み合わせたものが、LLVM GCCとなります。
パーサー部分もLLVM Clangを使ったものが、LLVM Compilerと呼ばれているようです。
下記ページが参考になります。

無印GCCをインストール

さて、LLVMじゃないGCC 4.2.1をインストールする手順を示します。
大きな流れとしては「GCCをインストール」→「GCCを使えるように設定」という2手順となります。
($の行はTerminalに入力する実行コマンド、#の行は次の行で行なっているコマンドの説明です)

# テンポラリディレクトリに移動.
$ cd /private/tmp
 
# tarボールをダウンロード.
$ curl -kLO http://opensource.apple.com/tarballs/gcc/gcc-5666.3.tar.gz
 
# tarボールを展開
$ tar zxvf gcc-5666.3.tar.gz
 
# 展開したディレクトリに移動
$ cd gcc-5666.3
 
# ビルド出力用フォルダを作成
$ mkdir -p build/obj build/dst build/sym
 
# ビルド(かなり時間がかかる)
$ sudo gnumake install RC_OS=macos RC_ARCHS='i386 x86_64' TARGETS='i386 x86_64' SRCROOT=`pwd` OBJROOT=`pwd`/build/obj DSTROOT=`pwd`/build/dst SYMROOT=`pwd`/build/sym
 
# (必要に応じてビルドされたGCCのバージョンを確認してみます)
$ ./build/dst/usr/bin/gcc-4.2 --version
 
# (必要に応じてもともと入っているGCCがあれば、そのバージョンを確認してみます)
$ /usr/bin/gcc --version
 
# コピー(注意!これで上書きしてしまいます!)
$ sudo ditto build/dst /

これでGCCのビルドは完了です。
gccがどのコマンドにシンボリックリンクされているか、次のようにTerminal上で確認し、必要に応じてlnコマンドで設定を切り替えましょう。(後述)

# gccのリンク先を確認
$ ls -al /usr/bin/gcc
lrwxr-xr-x  1 root  wheel  12  6 28 18:11 /usr/bin/gcc -> llvm-gcc-4.2
# ↑のようになっていたらLLVM GCCにシンボリックリンクされています。

Xcodeの設定変更

GCCのインストールが終わったら、Xcode側の設定を書き換えます。
(私はviが苦手なので、下記のようにemacsで編集していますが、お好みのエディタで変更してください)

1
2
# Emacsで設定ファイルを変更します
$ emacs "/Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/GCC 4.2.xcplugin/Contents/Resources/GCC 4.2.xcspec"

もともと次のように設定されている2項目を変更します。

  • ShowInCompilerSelectionPopup = NO;
  • IsNoLongerSupported = YES;

  • ShowInCompilerSelectionPopup = YES;
  • IsNoLongerSupported = NO;

これでXcodeを開き直すと、下図のように設定が追加されているのがわかります。

以上です。
ちなみに、Xcode集中連載はこの5回目で一旦終了で、またネタが溜まる日まで。

おまけ1:Emacsコマンドメモ<忘れがちな自分用のメモ>

emacsでは編集を保存するときには、C-x C-s、emacsを終了するときには、C-x C-cです。

おまけ2:lnコマンドについて

コメントで頂きましたlnコマンドの使い方について説明します。
lnコマンドは次のように、source_file(リンク先とするファイル)target_file(新しい作成するシンボリックリンク名)を引数とするシンボリックリンク作成コマンドです。

ln [-Ffhinsv] source_file [target_file]

/tmp/test1.txt という実際にあるファイルへのシンボリックリンクを /tmp/test.txt として作成する例を示します。

$ ls -alF /tmp/test*
-rw-r--r--@ 1 Hiromichi  wheel  22  5 11 22:55 /tmp/test1.txt
-rw-r--r--@ 1 Hiromichi  wheel  22  5 11 22:55 /tmp/test2.txt
$ tail /tmp/test1.txt 
This is a test 1 text.
$ tail /tmp/test2.txt 
This is a test 2 text.
 
$ ln -s /tmp/test1.txt test.txt
$ ls -alF /tmp/test*
lrwxr-xr-x  1 Hiromichi  wheel  14  5 11 22:56 /tmp/test.txt@ -> /tmp/test1.txt
-rw-r--r--@ 1 Hiromichi  wheel  22  5 11 22:55 /tmp/test1.txt
-rw-r--r--@ 1 Hiromichi  wheel  22  5 11 22:55 /tmp/test2.txt
$ tail /tmp/test.txt
This is a test 1 text.
にほんブログ村 IT技術ブログ iPhoneアプリ開発へ

[AD]

Xcode 4 完全攻略

著者/訳者:STUDIO SHIN

出版社:ソフトバンククリエイティブ( 2012-03-29 )

定価:

Amazon価格:¥ 2,916

大型本 ( 420 ページ )

ISBN-10 : 4797367717

ISBN-13 : 9784797367713


詳解iOS5プログラミング

著者/訳者:沼田 哲史

出版社:秀和システム( 2011-12-22 )

定価:

Amazon価格:¥ 3,024

単行本 ( 357 ページ )

ISBN-10 : 4798032034

ISBN-13 : 9784798032030