web-dev-qa-db-ja.com

Mac OS X LeopardでGCC 4.2をデフォルトコンパイラとして設定する

これを行う方法があるはずです。おそらくご存知のように、LeopardのXcodeの最新バージョン(および実際にはすべてのバージョンのXcode)にはGCC 4.0.1およびGCC 4.2が付属しています。 GCC 4.0.1はデフォルトのシステムコンパイラであり、GCC 4.2はXcodeプロジェクト設定で設定できるオプションのコンパイラです。

GCC 4.2をすべてのオプションのデフォルトコンパイラとして設定する方法を知っている人はいますか? Xcodeで何をしても、コマンドラインの使用とスクリプトの構成では、GCC 4.2ではなくGCC 4.0.1を使用することが望ましいです。私はそれが単にパス変数などを変更する場合であると仮定していますが、私はこれに困惑しています。

どんな助けも大歓迎です。ありがとう。

24
Cromulent

すべての構成スクリプトのコマンドラインの使用法:

  cd /usr/bin
  rm cc gcc c++ g++
  ln -s gcc-4.2 cc
  ln -s gcc-4.2 gcc
  ln -s c++-4.2 c++
  ln -s g++-4.2 g++

現在のリンクターゲットの記録を作成し、必要に応じてそれらを復元できるようにします。

システム全体の設定を変更したくない場合は、PATHの/ usr/binの前にディレクトリを追加します(たとえば、$HOME/bin)、シンボリックリンクを作成します

Xcode(コマンドラインのみ)を使用していないため、これがXcodeプロジェクトに影響するかどうかはテストしていません。

19

プロジェクトまたはターゲット情報ウィンドウで、ビルド設定「C/C++コンパイラバージョン」(GCC_VERSION)を設定します。

または、[ターゲット情報]ウィンドウで、「システムCルール」をお気に入りのGCCバージョンに変更できます。

更新:コマンドラインについては、デフォルトのコンパイラーの決定をLeopardに任せます。 Autotools configureなどのツールで別のコンパイラを使用する場合は、CC変数を定義することをお勧めします。

CC=gcc-4.2 ./configure

または

export CC=gcc-4.2
18
IlDan

notherAppleまたDarwin Portsにはgcc_selectプログラムがあり、デフォルトバージョンのSystem compiler(GNU/Linuxに存在する)、私はXCode(およびシステムの残りの部分)の安全な側になりたいので、シンボリックリンクをそのままにして、代わりに環境変数をセットアップすることをお勧めします使用するGCCのバージョン。

私の.profileファイルには次のものがあります

export CC=/usr/bin/gcc-4.2
export CPP=/usr/bin/cpp-4.2
export CXX=/usr/bin/g++-4.2 

そして、ソースからGCC 4.2を使用して次のライブラリを正常にコンパイルしました。

  • OpenSSL
  • libjpeg
  • libpng
  • zlib
  • gst

ただし... Boost 1.39で環境変数を認識できないため、BoostをGCC 4.2でコンパイルするには、/ usr/bin /のシンボリックリンクを変更してgcc v4.2を指すようにする必要がありました。

BoostライブラリがGCC 4.2でのコンパイルを完了してからしばらく経つと、シンボリックリンクを元のシステムバージョンgcc-4.0に戻しました。

16
user156592

私の経験では(制限あり)、. profileのCCを変更しても、Lion(10.7.2)のデフォルトはi686-Apple-darwin11-llvm-gcc-4.2に変更されません。これはApple自身のsymリンクと何か関係があるのだろうか:パーシャル:ls -la /usr/bin | grep .*gcc.*

lrwxr-xr-x     1 root   wheel        12 25 oct 19:31 cc -> llvm-gcc-4.2
lrwxr-xr-x     1 root   wheel        12 25 oct 19:31 gcc -> llvm-gcc-4.2
lrwxr-xr-x     1 root   admin        32 25 oct 19:31 llvm-gcc-4.2 -> ../llvm-gcc-4.2/bin/llvm-gcc-4.2

これらを破り、Martin v。Löwisの答えに従って自分自身をusr/bin/gcc-4.2に追加することには警戒しています。

3
Centzon

私は間違っているかもしれませんが、それがXcode-selectの目的だと思いましたか?

xcode-select --switch /path_to_tool_suite

私が言ったように、私はこれについて100%ではありませんが、TerminalやOSを呼び出してコンパイラを使用する他のアプリを含むすべてのプログラムのデフォルトを設定すると信じています。

2
user1712937

CC envが無視され、頻繁に切り替えられるようなものを作成する必要があるため、Pythonで単純なgcc_selectを作成しました。ここに投稿してもいいと思った。現在のシンボリックリンクを確認するには、4.0または4.2のいずれかの引数または引数なしで呼び出します。 4.0および4.2以外のバージョンを使用している場合、変更が必要になります。

#!/usr/bin/python
import sys
import os

os.chdir('/usr/bin')

files = ['cc', 'gcc', 'c++', 'g++']

if '4.0' in sys.argv:
  ver = '4.0'
Elif '4.2' in sys.argv:
  ver = '4.2'
else:
  print "Unknown gcc version.  Current setting:"
  os.system('ls -al %s' % ' '.join(files))
  sys.exit(1)

os.system('rm %s' % ' '.join(files))  
for f in files:
  os.system('ln -s %s-%s %s' % (f, ver, f))

print "Changed to gcc version %s" % ver
2
Stephan Deibel