Установка scikit: gcc-4.2 не найден, вместо этого используется Clang

При попытке установить scikit на свой Mac (OS X Lion) я наткнулся на эту ошибку:

gcc-4.2 не найден, вместо этого используется clang.

Я искал, как это исправить, и кажется, что переменная среды CC не правильно поставил. Теперь мой вопрос: как я могу это изменить и на что я должен это изменить? В моем /usr/lib/ я вижу исполняемые файлы g++, gcc, llvm-g++-4.2 и llvm-gcc-4.2. Также, когда я проверяю env, я не вижу переменную CC. Даже когда я пытаюсь экспортировать CC=gcc, я не вижу его с помощью команды env.


person Olivier_s_j    schedule 05.12.2012    source источник
comment
Если export CC=gcc не отображается в выводе env, у вас проблема или не-sh оболочка, такая как tcsh. echo $SHELL должен сообщить вам оболочку. И убедитесь, что вы не пропустили CC в выводе env, например: env | grep CC.   -  person    schedule 05.12.2012
comment
когда я делаю printenv CC , я вижу gcc , ошибка гласит, что он не может найти gcc-4.2 ...   -  person Olivier_s_j    schedule 05.12.2012
comment
Кстати, если вы устанавливаете через python setup.py build/install, вы можете добавить к этой строке CC=/usr/bin/gcc python setup.py build (и, возможно, другие переменные, например, для компилятора С++).   -  person    schedule 05.12.2012
comment
И это правильный компилятор для использования? Потому что есть еще и llvm-gcc-4.2, кажется   -  person Olivier_s_j    schedule 05.12.2012
comment
Какой scikit кстати? Если бы я знал, какой из них, у меня мог бы возникнуть соблазн попробовать процедуру установки самостоятельно. Обратите внимание, что на моем Mac с Lion есть /usr/bin/gcc-4.2, так что я не знаю, куда делся ваш...   -  person    schedule 05.12.2012
comment
ну, я взял тот, что был на github, что было плохой идеей. Я попробовал это с pip, но возникла проблема с numpy... Я не понимаю, почему у меня столько проблем, когда они все недавно установлены   -  person Olivier_s_j    schedule 05.12.2012
comment
это не то, что я имел ввиду. Существует несколько scikits: scikits-learn, scikits-image, scikits-fitting и т. д., и все они размещены на github. Я предполагаю, что вы установили scikits-learn, но, возможно, вы имели в виду все?   -  person    schedule 06.12.2012


Ответы (3)


Если scikits явно ищет gcc-4.2, похоже, что он жестко запрограммирован в процедуре установки (плохая идея, имхо).

Тогда я бы просто выбрал решение для символической ссылки; немного отличается от моего комментария или ответа Рамнека, но почти то же самое:

sudo ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2
person Community    schedule 05.12.2012

Есть несколько способов сделать это:

  1. #P2# <блочная цитата>
    make CC=/path/to/gcc CXX=path/to/g++ 
    make CC=/path/to/gcc CXX=path/to/g++ install 
    etc.
    
  2. #P3# <блочная цитата>
    cd /usr/bin
    rm cc c++ gcc 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++
    

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

person RamneekHanda    schedule 05.12.2012

gcc и таких должно быть не в /usr/lib/, а (также) в /usr/bin/. В /usr/lib/ находятся подкаталоги, в /usr/bin/ — исполняемые файлы.

Вполне может быть, что у вас есть библиотеки в этих подкаталогах, но не исполняемые файлы и заголовочные файлы.

Вы установили инструменты командной строки во время установки XCode?

person Community    schedule 05.12.2012
comment
У меня установлены инструменты командной строки, и я вижу gcc и g++ в /usr/bin/ (но не gcc-4.2) - person Olivier_s_j; 05.12.2012
comment
Конечно, вы всегда можете создать символическую ссылку gcc-4.2 на gcc, но это не обязательно. Вы проверили свою оболочку; вам нужно выяснить, почему вы можете установить CC в качестве переменной среды. - person ; 05.12.2012