Подтвердить что ты не робот

Установка GCC 4.2 в качестве компилятора по умолчанию для Mac OS X Leopard

Я уверен, что должен быть способ сделать это. Поскольку вы, вероятно, знаете последние версии Xcode (и на самом деле я думаю, что все версии Xcode) на Leopard поставляются с GCC 4.0.1 и GCC 4.2. GCC 4.0.1 является системным компилятором по умолчанию, а GCC 4.2 является дополнительным компилятором, который вы можете установить в настройках проекта Xcode.

Кто-нибудь знает, как установить GCC 4.2 в качестве компилятора по умолчанию для всех параметров? Предпочтительно использование командной строки, а также скрипты configure по-прежнему используют GCC 4.0.1, а не GCC 4.2, независимо от того, что я делаю в Xcode. Я предполагаю, что это просто случай изменения переменной пути или некоторых таких, но я в тупике на этом.

Любая помощь приветствуется. Спасибо.

4b9b3361

Ответ 1

Использование командной строки для всех скриптов configure:

  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 (только в командной строке).

Ответ 2

В окне Project или Target Info установите параметр сборки "версия компилятора C/С++" (GCC_VERSION).

Или в окне целевой информации вы можете изменить правило "System C" на вашу любимую версию GCC.

Обновление. Что касается командной строки, я бы оставил Leopard решение о том, каким должен быть компилятор по умолчанию. Если вы хотите использовать другой компилятор с такими инструментами, как Autotools configure, вам лучше определить переменную CC.

CC=gcc-4.2 ./configure

или

export CC=gcc-4.2

Ответ 3

Поскольку ни порты Apple, ни Darwin не имеют программы 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.

Ответ 4

Im мой опыт (ограниченный), изменение CC в .profile не меняет Lion (10.7.2), по умолчанию на i686-apple-darwin11-llvm-gcc-4.2. Интересно, имеет ли это какое-либо отношение к собственной символической привязке Apple: частичное: 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

Я опасаюсь нарушить их и добавить свой собственный ответ usr/bin/gcc-4.2 на Martin v. Löwis.

Ответ 5

Так как мне нужно строить вещи, где CC env игнорируется, и я в конечном итоге переключаюсь часто, я написал простой мысленный gcc_select в Python. Думаю, я могу опубликовать его здесь. Вызовите его с аргументом arg 4.0 или 4.2 или no arg, чтобы увидеть текущие символические ссылки. Если потребуется версия, отличная от 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

Ответ 6

Возможно, я ошибаюсь, но я подумал, что для этого был Xcode-select?

xcode-select --switch /path_to_tool_suite

Как я уже сказал, я не на это 100%, но я считаю, что он установит значение по умолчанию для всех программ, включая Terminal и другие приложения, которые звонят в ОС для использования компилятора.