OSX «clang ++ -lboost_mpi» `- & gt;» ld: библиотека не найдена для -lboost_mpi » после заваривания установите boost —with-mpi

После установки Boost с поддержкой MPI с помощью Brew я все еще получаю ошибку ld: "library not found for -lboost_mpi" когда я бегу clang++ -lboost_mpi, Что я могу сделать, чтобы преодолеть это? Я установил Boost, используя Brew:

$ brew install boost --with-mpi --without-single
==> Downloading https://downloads.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.tar.bz2
Already downloaded: /Library/Caches/Homebrew/boost-1.58.0.tar.bz2
==> ./bootstrap.sh --prefix=/usr/local/Cellar/boost/1.58.0 --libdir=/usr/local/Cellar/boost/1.58.0/lib --without-icu --without-libraries=python
==> ./b2 --prefix=/usr/local/Cellar/boost/1.58.0 --libdir=/usr/local/Cellar/boost/1.58.0/lib -d2 -j4 --layout=tagged --user-config=user-config.jam install t
��  /usr/local/Cellar/boost/1.58.0: 10668 files, 300M, built in 10.9 minutes

Как я могу использовать clang++ -lboost_mpi успешно?

$ mdfind -name libboost_mpi
/usr/local/Cellar/boost/1.58.0/lib/libboost_mpi-mt.dylib
/usr/local/Cellar/boost/1.58.0/lib/libboost_mpi-mt.a

$ clang++ -I/usr/local/Cellar/boost/1.58.0/lib -lboost_mpi
ld: library not found for -lboost_mpi
clang: error: linker command failed with exit code 1 (use -v to see invocation)

0

Решение

Поведение по умолчанию при сборке boost с brew на OSX — это сборка с тегами — если вы посмотрели результат сборки, вы бы увидели что-то вроде:

./b2 --prefix=/usr/local/Cellar/boost/1.58.0 --libdir=/usr/local/Cellar/boost/1.58.0/lib -d2 -j8 --layout=tagged --user-config=user-config.jam install threading=multi link=shared,static

и --layout=tagged приводит к тому, что многопоточные версии пост-исправляются -mt,

Это означает, что ваша библиотека boost_mpi называется: boost_mpi-mtи это то, на что вы должны ссылаться, поэтому библиотека, на которую вы ссылаетесь, libboost_mpi-mtтак что опция -lboost_mpi-mt,

Вы могли бы также посмотреть в /usr/local/Cellar/boost/1.58.0/lib каталог для библиотеки — на это бы тоже намекали.

Если вы хотите получить непомеченную сборку (т.е. без -mt), тогда редактировать рецепт повышения (используя brew edit boost) и заменить --layout=tagged с --layout=system, Это может привести к поломке других вещей.

2

Другие решения


По вопросам рекламы [email protected]