Boost.python의 원본 컴파일 설치 (Boost.Python.ArgumentError 해결 시도)

문제 설명
본인이pycaffe로 프로그램(snntoolbox)을 실행하려고 시도했을 때 Boost.Python.ArgumentError: Python argument types in Net.__init__(Net, unicode, int) did not match C++ signature:의 오류가 발생했습니다. 각 포럼의 관련 답변과 공식 사이트의 강좌를 넘은 후에 주요 의견은 다음과 같습니다.전달 매개 변수 유형이 함수 성명과 일치하지 않음;2. Boost는 sudo apt install에 설치하지 말고 원본 코드가 자신의python에 따라 컴파일해야 한다(build against python version).본인의 상황 분석(pycaffe+snntoolbox 운행)에 따르면 두 번째 원인으로 인한 것일 가능성이 높기 때문에 이 문제를 해결하려면 원본 컴파일을 통해 설치하는 방법을 배워야 한다.(결과적으로 원본에서 boost를 설치하는 것을 배웠지만 오류 보고를 해결하지 못했다. 아마도 a. 마운트가 깨끗하지 않고 b.caffe의Makefile 안의 설정 문제 때문일 것이다.) 본인은 boost에 대해 문외한이기 때문에 글에 오류가 많을 것이다. 지적을 환영합니다.
boost 소개
  • boost: Boost 라이브러리는 C++ 언어 표준 라이브러리에 확장된 일부 C++ 프로그램 라이브러리의 총칭입니다.
  • boost.python: 이것은 boost 라이브러리의 일부입니다. boost와 함께 설치되어 C++와 Python 코드의 상호작용을 실현합니다.

  • libboost-dev 마운트 해제
    만약 당신이 이전에 sudo apt install libboost-dev libboost-all-dev의 방식으로 boost를 설치했다면(예를 들어 Ubuntu 16.04에서 CUDA 홈페이지의 추천 방식에 따라 카페를 설치했다면) 먼저 마운트 해제하는 것을 권장합니다.설치 제거 방법은 다음과 같습니다.
    sudo apt remove libboost-dev libboost-all-dev

    Boost.python의 컴파일 설치
  • 설명: 커피는 boost 지원이 필요하기 때문에 마운트 해제 후 모든 boost 파일은 설치를 통해 설치해야 한다. (boost.python이 아닌 경우 설치는 헤드 파일을 PREFIX 경로로 복사하는 것이다. [기본값은/usr/local]) boost뿐만 아니라.python (boost.python은 headers-only 파일이 아니라 단독build 필요)
  • step1: 원본 파일의 다운로드 및 압축 해제
    우선, boost 홈페이지 다운로드 안내에 따라 상기 사이트에서 boost 원본 코드의 압축 파일을 다운로드하면 현재 시간의 파일은 boost_1_66_0.tar.bz2으로 $HOME 디렉터리에 놓여 있다.
    ~$ tar --bzip2 -xvf boost_1_66_0.tar.bz2
    ~$ cd boost_1_66_0
    ~/boost_1_66_0$ ./bootstrap.sh
    #      
    Building Boost.Build engine with toolset gcc... tools/build/src/engine/bin.linuxx86_64/b2
    Detecting Python version... 2.7
    Detecting Python root... /usr
    Unicode/ICU support for Boost.Regex?... not found.
    Backing up existing Boost.Build configuration in project-config.jam.1
    Generating Boost.Build configuration in project-config.jam... #      project-config.jam
    
    Bootstrapping is done. To build, run:
    
        ./b2 #        
    
    To adjust configuration, edit 'project-config.jam'.
    Further information:
    
       - Command line help:
         ./b2 --help #          ,                    
    
       - Getting started guide: 
         http://www.boost.org/more/getting_started/unix-variants.html
    
       - Boost.Build documentation:
         http://www.boost.org/build/doc/html/index.html

    우리는 프로필 이름과 사용 알림을 포함하여 상술한 반환 정보를 주목해야 한다.
    step2: boost 재컴파일
    이 단계에서는 모든 boost 관련 파일을 다시 컴파일하여 명령을 실행합니다.
    ~/boost_1_66_0$ ./b2 -a

    셸 반환 정보를 주목할 때 경로 1을 #include path에 추가하고 경로 2를 #compiler path에 추가하는 것을 권장합니다. 다음은 안내에 따라 환경 변수를 설정합니다.
    step3: 환경 변수 설정
    ~$ sudo gedit ~/.profile
    #     shell      ,               
    export BOOST_INCLUDE=$HOME/boost_1_66_0
    export BOOST_LIB=$HOME/boost_1_66_0/stage/lib
    #       
    ~$source ~/.profile

    step4: boost 설치 확인
    나에게 있어서, 커피는 boost 지원이 필요하기 때문에, 검증 방식은 커피 폴더에서Makefile을 다시 컴파일하는 것이다.config, 순서대로 make all, make test, make runtest, 최종 테스트가 완전히 통과될 때까지.물론 간단한 방법은 라이브러리를 호출해서 코드를 조금만 실행하는 것이겠지.
    ~$ touch sample.cpp
    ~$ sudo gedit sample.cpp

    열린 파일에 다음 코드를 입력하십시오
    #include 
    #include 
    #include 
    #include 
    using namespace std;
    int main()
    {
        boost::timer t;
        cout << "max timespan: " << t.elapsed_max() / 3600 << "h" << endl;
        cout << "min timespan: " << t.elapsed_min() << "s" << endl;
        cout << "now time elapsed: " << t.elapsed() << "s" << endl;
        cout << "boost version" << BOOST_VERSION <cout << "boost lib version" << BOOST_LIB_VERSION <return 0;
    }
    ~$ g++ sample.cpp -o sample.out #    sample.out  
    ~$ ./sample.out #    

    다음 출력 얻기
    max timespan: 2.56205e+09h
    min timespan: 1e-06s
    now time elapsed: 0.000135s
    boost version105800#  ,         ....
    boost lib version1_58

    참고 자료
    boost 공식 안내 Ubuntu에서 설치 boost 전체 컴파일

    좋은 웹페이지 즐겨찾기