2009-10-08 4 views
2

나는 HPC에서 일하고있다. HPC에는 이전 버전의 Boost가 설치되었으며 Boost 라이브러리에는 Boost.MPI가 없습니다. HPC에 설치하려면 관리자에게 요청했습니다. 하지만 그들은 내 홈 디렉토리에 설치해달라고 요청했습니다. 그래서 나는 boost와 boost.mpi를 모두 홈 디렉토리에 설치했다. 부스트 라이브러리가 올바르게 작동하는 것 같습니다. 그러나 아래 명령을 사용하여 다음 코드를 실행하려고하면 오류가 발생합니다.부스트 .MPI 문제

테스트 코드 :

#include <boost/mpi/environment.hpp> 
#include <boost/mpi/communicator.hpp> 
#include <iostream> 
namespace mpi = boost::mpi; 

int main(int argc, char* argv[]) 
{ 
    mpi::environment env(argc, argv); 
    mpi::communicator world; 
    std::cout << "I am process " << world.rank() << " of " << world.size() 
     << "." << std::endl; 
    return 0; 
} 

빌드 명령을

mpiCC -I/home1/username/boost/include 
-I/usr/mpi/gcc/openmpi-1.2.8/include/ 
-L/home1/username/boost/lib 
-L/usr/mpi/gcc/openmpi-1.2.8/lib64/openmpi 
-lboost_mpi-gcc-mt-1_35 testboostmpi2.cpp 

나는 다음과 같은 오류가 비명을 지르고있어 : 너희 중에 누구든지 할 수있는 경우에

testboostmpi2.o: In function `main': 
testboostmpi2.cpp:(.text+0x59): undefined reference to  
`boost::mpi::environment::environment(int&, char**&, bool)' 
testboostmpi2.cpp:(.text+0x63): undefined reference to 
`boost::mpi::communicator::communicator()' 
testboostmpi2.cpp:(.text+0x86): undefined reference to 
`boost::mpi::environment::~environment()' 
testboostmpi2.cpp:(.text+0xb9): undefined reference to 
`boost::mpi::environment::~environment()' 

나는 매우 감사하게 될 거라고 도움.

답변

2

불행히도, 나는 부스트 1.41을 사용하고 있으므로 정확한 비교가 불가능합니다. 그러나 -lboost_mpi (새 라이브러리 명명 규칙)을 포함하지 않았을 때 정확한 오류가 발생했습니다. 따라서 디렉토리가 정확하고 포함해야한다고 생각하는 내용이 포함되어 있는지 확인합니다.

3

g ++를 사용한다고 가정하면 -Wl,--rpath 링커 옵션을 사용해 볼 수 있습니다.

mpiCC testboostmpi2.cpp -I/home1/username/boost/include-I/usr/mpi/gcc/openmpi-1.2.8/include/ \ 
    -L/home1/username/boost/lib -L/usr/mpi/gcc/openmpi-1.2.8/lib64/openmpi \ 
    -lboost_mpi-gcc-mt-1_35 -Wl,-rpath -Wl,/home1/username/boost/lib \ 
    -Wl,-rpath -Wl,/usr/mpi/gcc/openmpi-1.2.8/lib64/openmpi 

또한 올바른 순서로 링크하려면 소스 파일을 첫 번째 인수가 아닌 마지막 인수로 두어야합니다.

+1

** "원본 파일을 마지막 인수가 아닌 첫 번째 인수로 넣어야 올바른 순서가됩니다."**이 +1 때문에이 세부 정보 때문에 설치 및 재설치하는 데 많은 시간을 투자했습니다. –