Я столкнулся с ошибкой при попытке запустить Bayescan 2.0.Не удается ли несколько версий gcc запутать dylib (libgcc_s.1.dylib) и предотвратить запуск двоичных файлов?
Это на Mac OS X 10.9.2 Mavericks. Когда вы просто вызываете программу без входного файла, меню справки отображается нормально.
BayeScan2.1_macos64bits --help
Однако при выполнении программы с входного файла в качестве аргумента ...
BayeScan2.1_macos64bits test.input
эта ошибка показывает:
dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address
Referenced from: /usr/local/lib/libgomp.1.dylib
Expected in: /usr/local/lib/libgcc_s.1.dylib
dyld: Symbol not found: ___emutls_get_address
Referenced from: /usr/local/lib/libgomp.1.dylib
Expected in: /usr/local/lib/libgcc_s.1.dylib
Trace/BPT trap: 5
Программа выполнена прекрасно в прошлом. Моя догадка заключается в том, что неправильные файлы gcc ссылаются на «libgcc_s.1.dylib», но я не знаю, как исправить. Я попытался установить различные версии gcc и gfortran, но наличие нескольких установок кажется вообще плохим. Установлены как Macports, так и Homebrew.
Возможно, связанная с этим проблема установки связана с пакетом R-forge с сообщением об ошибке «символ не найден», который также ссылается на libgcc_s.1.dylib. К сожалению, я понятия не имею, что это dylib есть, как искать символы, ссылки правильные версии GCC, и т.д.
Моя активная НКУ версия, кажется, LLVM 5.1:
gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix
И gfortran версия 4.9 :
gfortran --version
GNU Fortran (GCC) 4.9.0
Однако похоже, что несколько gcc libs могут существовать?
ls -1 /usr/local/lib/gcc
i686-apple-darwin8/
i686-apple-darwin8.8.1/
powerpc-apple-darwin8/
x86_64-apple-darwin13.0.0/
Кроме того, он выглядит, как и другие GCC/gfortran версии в/Opt/местные/бен:
ls -1 /opt/local/bin/*gfortran*; ls -1 /opt/local/bin/*gcc*
/opt/local/bin/gfortran-mp-4.7*
/opt/local/bin/gfortran-mp-4.8*
/opt/local/bin/x86_64-apple-darwin13-gfortran-mp-4.7*
/opt/local/bin/x86_64-apple-darwin13-gfortran-mp-4.8*
/opt/local/bin/gcc-ar-mp-4.7*
/opt/local/bin/gcc-ar-mp-4.8*
/opt/local/bin/gcc-mp-4.7*
/opt/local/bin/gcc-mp-4.8*
/opt/local/bin/gcc-nm-mp-4.7*
/opt/local/bin/gcc-nm-mp-4.8*
/opt/local/bin/gcc-ranlib-mp-4.7*
/opt/local/bin/gcc-ranlib-mp-4.8*
/opt/local/bin/x86_64-apple-darwin13-gcc-4.7.3*
/opt/local/bin/x86_64-apple-darwin13-gcc-4.8.3*
/opt/local/bin/x86_64-apple-darwin13-gcc-ar-mp-4.7*
/opt/local/bin/x86_64-apple-darwin13-gcc-ar-mp-4.8*
/opt/local/bin/x86_64-apple-darwin13-gcc-mp-4.7*
/opt/local/bin/x86_64-apple-darwin13-gcc-mp-4.8*
/opt/local/bin/x86_64-apple-darwin13-gcc-nm-mp-4.7*
/opt/local/bin/x86_64-apple-darwin13-gcc-nm-mp-4.8*
/opt/local/bin/x86_64-apple-darwin13-gcc-ranlib-mp-4.7*
/opt/local/bin/x86_64-apple-darwin13-gcc-ranlib-mp-4.8*
являются несколько версий GCC/gfortran, вызывающие эту ошибку? Любые другие идеи? Любая помощь приветствуется! Извините, я больше не могу описать мою настройку fortran.
EDIT: Вот родственное сообщение: https://github.com/mash/node-imagemagick-native/issues/17
EDIT # 2: Эта ошибка вызвало несколько программ. Чтобы проиллюстрировать это, вот сообщение об ошибке при попытке запустить программу GENEPOP:
Genepop
Genepop version 4.2.1
Unable to open file genepop.txt
Unable to open file dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address
Referenced from: /usr/local/lib/libstdc++.6.dylib
Expected in: /usr/local/lib/libgcc_s.1.dylib
dyld: Symbol not found: ___emutls_get_address
Referenced from: /usr/local/lib/libstdc++.6.dylib
Expected in: /usr/local/lib/libgcc_s.1.dylib
Trace/BPT trap: 5
Если я временно маскирует libgcc_s.1.dylib ...
sudo mv /usr/local/lib/libgcc_s.1.dylib /usr/local/lib/libgcc_s.1.dylibTEMP
Genepop
Genepop version 4.2.1
Unable to open file genepop.txt
Unable to open file dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address
Referenced from: /usr/local/lib/libstdc++.6.dylib
Expected in: /usr/lib/libSystem.B.dylib
dyld: Symbol not found: ___emutls_get_address
Referenced from: /usr/local/lib/libstdc++.6.dylib
Expected in: /usr/lib/libSystem.B.dylib
Trace/BPT trap: 5
И, наконец, если я маскировать цельные/usr/local directory, это решает проблему для некоторых программ (Genepop)! Но не для других (Bayescan):
sudo mv /usr/local /usr/localTEMP
BayeScan2.1_macos64bits test.input
dyld: Library not loaded: /usr/local/lib/libgomp.1.dylib
Referenced from: /Users/maierpa/programs/Bayescan
Reason: image not found
Trace/BPT trap: 5
Спасибо Билл! Связь с домашним каталогом сделала трюк. Не совсем понятно, как создавать программы с помощью компилятора clang/clang-omp? – Paul
О clang-omp, подумал, что было бы проще продолжить использование копии этих инструментов на основе GCC и в конечном итоге переключиться на clang/LLVM после запуска инструментов командной строки Apple, включая компилятор clang, который поддерживает параметр -fopenmp , Как только это произойдет, должно быть возможно легко построить BayeScan без установки GCC через MacPorts или homebrew. –