Установка Galsim на OSX в среде conda: файлу fftw/tmv не удалось правильно связать

Я установил FFTW и Boost с Конда;

Конда установить -c https://conda.anaconda.org/anaconda Boost

Конда установить -c https://conda.anaconda.org/nlesc fftw

тмв с сыновьями

tmv0.72){58}> scons устанавливает PREFIX=/home/rgm/local

scons с различными переменными, указанными ранее, как показано ниже:

scons 
scons: Reading SConscript files ...
SCons is version 2.3.5 using python version 2.7.10
Python is from /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
Using the following (non-default) scons options:
PREFIX = /home/rgm/local/
TMV_DIR = /Users/rgm/local
FFTW_DIR = /Users/rgm/anaconda/
BOOST_DIR = /Users/rgm/anaconda/
These can be edited directly in the file gs_scons.conf.
Type scons -h for a full list of available options.
Using python =  /home/rgm/anaconda/bin/python
Using default PYPREFIX =  /home/rgm/anaconda/lib/python2.7/site-packages
Using compiler: /home/rgm/anaconda/bin/g++
compiler version: 4.8.5
Determined that a good number of jobs = 4
Checking for C++ header file fftw3.h... yes
Checking for correct FFTW linkage... yes
Checking for boost header files... yes
Boost version is 1.57.0
Checking for C++ header file TMV.h... yes
TMV version is 0.72
Using TMV_LINK file: /Users/rgm/local/share/tmv/tmv-link
 -L/home/rgm/local/lib -ltmv -lblas -lpthread -fopenmp
Mac version is 10.10.5
XCode version is 7.2
Checking for correct TMV linkage... (this may take a little while)
Checking for correct TMV linkage...
Error: TMV file failed to link correctly
Check that the correct location is specified for TMV_DIR

глядя в config.log есть такие строки:

Undefined symbols for architecture x86_64:
  "_fftw_destroy_plan", referenced from:
  _main in conftest_2.o

1 ответ

Непосредственной проблемой здесь является то, что она не может найти библиотеку OpenMP (libgomp.1.dylib) во время выполнения. Вот соответствующие строки из config.log:

g++ -o .sconf_temp/conftest_16 -fopenmp .sconf_temp/conftest_16.o -Llib -L/Users/rgm/anaconda/lib -L/Users/rgm/local/lib -L/home/rgm/local/lib -ltmv_symband -lfftw3 -lpthread -ltmv -lblas -lpthread
.sconf_temp/conftest_16 > .sconf_temp/conftest_16.out
dyld: Library not loaded: @rpath/./libgomp.1.dylib
  Referenced from: /data/vault/rgm/soft/MACOS/GalSim/.sconf_temp/conftest_16
  Reason: image not found
sh: line 1: 20592 Trace/BPT trap: 5       .sconf_temp/conftest_16 > ".sconf_temp/conftest_16.out"

У меня были подобные проблемы с Анакондой раньше на Mac. Похоже, они пытаются заставить Mac использовать разрешение библиотеки времени выполнения в стиле Unix, а не следовать обычному способу, которым это делают Mac, что принципиально отличается. В частности, эта функция @rpath работает очень хорошо в системах Linux/Unix, но не так много на Mac. Я предполагаю, что с их собственными установленными conda библиотеками у них есть способ заставить все это работать правильно, но это не очень хорошо сочетается с внешними библиотеками, которые установлены обычным способом Mac.

В любом случае, поскольку это всего лишь материал OpenMP в TMV, а операции с матрицами в GalSim никогда не являются критичными по времени, самый простой вариант - установить TMV без поддержки OpenMP, используя scons install WITH_OPENMP=false,

Затем попробуйте установить GalSim снова.

Другие вопросы по тегам