Boost.python의 원본 컴파일 설치 (Boost.Python.ArgumentError 해결 시도)
6536 단어 ubuntu에서 깊이 있는 학습 도구 설정
본인이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 소개
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_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 전체 컴파일