2013-07-15 2 views
0

Я пытаюсь установить numba в виртуальной среде. Numba требует llvm и что-то вроде Python-обертки llvmpy. Я успешно установил его с помощью following steps:Установка Numba и «make check-all»

wget http://llvm.org/releases/3.2/llvm-3.2.src.tar.gz 
tar zxvf llvm-3.2.src.tar.gz 
cd llvm-3.2.src 
./configure --enable-optimized --prefix=/opt 
REQUIRES_RTTI=1 make 
make check-all 
sudo REQUIRES_RTTI=1 make install 

git clone git://github.com/llvmpy/llvmpy.git 
cd llvmpy 
sudo LLVM_CONFIG_PATH=/opt/bin/llvm-config /path/to/environment/bin/python setup.py install 

python -c "import llvm; llvm.test()" 

Однако, я хотел бы знать, что это правильная процедура. Например, в строке REQUIRES_RTTI=1 make и sudo REQUIRES_RTTI=1 make install переменная REQUIRES_RTTI повторяется. Это необходимо?

Согласно документации numba, рекомендуется выполнить REQUIRES_RTTI=1 make install, а llvmpy рекомендует REQUIRES_RTTI=1 make, поэтому есть небольшие отличия. Я действительно не знаю, что делает каждый шаг, поэтому я хотел бы получить общее объяснение того, что происходит, и если все эти шаги строго необходимы.

Кроме того, что такое make check-all? Я видел, что это особенно актуально в вопросах, связанных с llvm, но я не знаю, в чем его цель.

Другим предложением документации llvmpy является установка с использованием другого каталога (--prefix). Почему это рекомендуемый подход?

Большое спасибо

ответ

1

Следующие строки

REQUIRES_RTTI=1 make 
sudo REQUIRES_RTTI=1 make install 

используют способ настройки среды вызываемым процесса без изменения среды в calee (как и в случае экспорта REQUIRES_RTTI = 1); от bash manual:

Среда для любой простой команды или функции могут быть дополнены временно предваряя его параметров заданий. Эти утверждения присваивания влияют только на окружение , наблюдаемое этой командой.

Этот параметр рекомендуется, так как от LLVM docs:

Добавить REQUIRES_RTTI = 1 в среде во время работы сделать, чтобы снова включить его. Это позволит пользователям создавать с включенным RTTI и по-прежнему наследовать классы LLVM.

и в соответствии с документами llvmpy требуется RTTI.

Так, забывая это «усложнение» и стандартное требование использовать «Суд» для установки, шаги стандартны:

### generating makefile: 
./configure --enable-optimized --prefix=/opt 
### building core libraries (make without target is the same as "make all") 
make 
### check-all is a makefile target that is used to run regression tests (according to LLVM docs) 
make check-all 
### installing the libraries to the place where other tools/libraries can find them: 
make install 
+0

Великое объяснение. Несколько вопросов. Нужно ли добавлять REQUIRES_RTTI = 1 в make и make install? Тогда неправильные инструкции, которые только пишут «REQUIRES_RTTI = 1 make install»? –

+0

@RobertSmith Я просмотрел makefile.rules и нашел, что это env. вар. влияет только на флаги компиляции (т. е. «сделать»). Поэтому, скорее всего, вы правы (для установки не требуется установка REQUIRES_RTTI), но я не могу быть на 100% уверенным, не тестируя оба способа и сравнивая. – pmod

+0

Отлично. Спасибо. –

Смежные вопросы