Сменить компилятор C и C++ на Mac OS X 10.7

101
14

Мне нужно было использовать инструменты командной строки OpenMP и Xcode, поставляемые с версией gcc версии 4.2.something, поэтому я хотел перейти на версию gcc версии 4.8. У меня установлен gcc4.8. Я сделал это -

$ sudo rm /usr/bin/gcc /usr/bin/g++
$ sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.8

Аналогичная ссылка для g++. Теперь в /usr/bin создается ссылка gcc. Я вижу gcc в /usr/bin, когда я делаю $ ls -la/usr/bin

и я также могу видеть правильную символическую ссылку, когда я это делаю

$ ls -la /usr/bin | grep gcc

Он указывает на gcc-4.8.

Однако система просто игнорирует gcc. Это как будто этого не существует. /usr/bin находится в переменной PATH. Однако gcc [tab complete] не отображается.

$ gcc
-bash: gcc: command not found

Компиляция любой программы на C теперь использует cc, расположенный в /usr/bin/cc. Я не понимаю. Я просто удалил текущую symlink gcc с помощью xcode CLTools и создал новую. Что я сделал неправильно, учитывая, что я действительно сделал очень мало?

Спасибо.

спросил(а) 2013-05-24T21:16:00+04:00 7 лет, 4 месяца назад
1
Решение
58

Ваш синтаксис для создания символической ссылки неверен: первый аргумент ln - это то, где вы хотите, чтобы ссылка указывала.

sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc

На странице man для ln:

SYNOPSIS
ln [-Ffhinsv] source_file [target_file]
ln [-Ffhinsv] source_file ... target_dir

Это немного запутывает, так как "источник" и "цель" могут быть интерпретированы в любом случае (т. target_file является целью ссылки или цели команды ln?). Страница руководства позже разъясняет это:

Учитывая один или два аргумента, ln создает ссылку на существующий файл source_file. Если задан target_file, ссылка имеет это имя; target_file также может быть каталогом для размещения ссылки; иначе он будет помещен в текущий каталог. Если указан только каталог, ссылка будет сделана с последним компонентом source_file.

ответил(а) 2013-05-24T21:29:00+04:00 7 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема