почему у меня есть 2 версии gcc и g ++ в Mac OS X?

Я только что переустановил Mac OS X Yosemite перед установкой Xcode, а затем CommandlineTools.

Кажется, у меня есть две версии gcc и g ++ в следующих двух каталогах:

  1. / usr / bin (оба файла - 14 КБ) и
  2. / Library / Developer / CommandLineTools / usr / bin (g ++ - это просто псевдоним, а gcc - 19 КБ)

Введите «which gcc» в Терминале дает мне «/ usr / bin / gcc», также как и «which g ++», который дает мне «/ usr / bin / g ++», и это означает, что система будет использовать только gcc и g ++ в / usr / bin

Итак, мои вопросы:

1. почему у меня две версии gcc и g ++?

2. почему gcc и g ++, установленные с CommandLineTools, не указаны как стандартные?

3. Как мне попросить Mac OS X указать на gcc и g ++ в каталоге «/ Library / Developer / CommandLineTools / usr / bin»?

Кстати, я установил CommandlineTools в соответствии со следующим:

http://railsapps.github.io/xcode-command-line-tools.html

Однако я получил другой результат, набрав «gcc --version» (разница выделена):

Настраивается с помощью: --prefix = /Application/Xcode.app/Contents/Developer/usr --with-gxx-include-dir = / usr / include / c ++ / 4.2.1 Apple LLVM версии 6.0 (clang-600.0.54) (на основе LLVM 3.5svn) Цель: x86_64-apple-darwin14.0.0 Модель потока: posix

... а не / Library / Developer / CommandLineTools / usr, как показано на веб-странице выше ...

Я очень смущен тем, какой gcc / g ++ на самом деле используется Mac OSX в настоящее время ...


person oat    schedule 15.02.2015    source источник
comment
Это не вопрос программирования. Не по теме.   -  person Stephen C    schedule 15.02.2015


Ответы (2)


Mac OSX не использует gcc (g ++). Начиная с Mac OSX 10.7 по умолчанию используется Clang. Поэтому, когда вы вводите gcc или g ++ для компиляции, он фактически использует Clang (cc)

person adnan kamili    schedule 15.02.2015

Обычно, когда вы вызываете cc, cxx или c ++, вы вызываете clang. Прочтите здесь для получения дополнительной информации о состоянии Apple clang (https://developer.apple.com/library/mac/documentation/CompilerTools/Conceptual/LLVMCompilerOverview/)

Добавляя к тому, что сказал @adnan-kamili, вы можете задаться вопросом, почему Apple сделала это. Вот краткий ответ Ллии Лебедев (https://www.quora.com/Compilers-Why-did-Apple-create-Clang)

Фактором в их решении, безусловно, могла быть лицензия GCC. GPL очень ограничивает несвободные программы. В частности, GPL требует, чтобы производные проекты предоставлялись с полным и открытым исходным кодом, также под лицензией GPL.

Хотя разумный курс действий, доступный для Apple, будет заключаться в выделении горстки умных инженеров для усиления поддержки GCC всего, что Apple, лицензия потребует, чтобы их работа также была выпущена под GPL - сложное предложение для крупной корпорации. , так как это, вероятно, вынудит значительное количество программного обеспечения Apple, подключенного к GCC, также будет выпущено под GPL.

Clang имел открытый исходный код в соответствии с гораздо более либеральной лицензией Университета Иллинойса, которая позволяет Apple разрабатывать частные ответвления Clang без выпуска полного исходного кода.

person Dendi Suhubdy    schedule 14.04.2016