Linux 컴 파일 설치 boost 1.48

3830 단어 linuxboost
더 읽 기
1.다운로드 사이트:
http://sourceforge.net/projects/boost/files/boost/1.48.0/
2.설치

tar -xzvf boost_1_48_0.tar.g -C ~/source
cd source/boost_1_48_0/
./bootstrap.sh
sudo ./bjam  --layout=versioned --build-type=complete --toolset=gcc install

3.환경 변수 설정
        /etc/profile.d 에 실행 가능 한 파일 boost.sh 를 새로 만 들 고 파일 내용 을 추가 합 니 다.

#!/bin/sh
BOOST_INCLUDE=/usr/local/include/boost 
BOOST_LIB=/usr/local/lib
export BOOST_INCLUDE BOOST_LIB 

명령 행 실행:source/etc/profile.d/boost.sh
        이후 컴 파일 러 에 서 는:-I$BOOSTINCLUDE -L$BOOST_LIB 를 사용 하면 됩 니 다.-l 을 사용 하여 링크 라 이브 러 리 를 지정 합 니 다.
4.공유 라 이브 러 리 링크 디 렉 터 리 설정
/etc/ld.so.conf 파일 내용 뒤에 추가/usr/local/lib
명령 행 실행

sudo ldconfig

5.직면 한 문제 및 해결 방안
설치 과정 에서 bz 와 관련 된 오류 가 많이 발생 했 습 니 다.해결 방안 은 다음 과 같 습 니 다.

sudo apt-get install libbz2-dev

PS 설치 중 오류:

libs/iostreams/src/bzip2.cpp:20:56: error: bzlib.h:          
libs/iostreams/src/bzip2.cpp:31: error: ‘BZ_OK’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:32: error: ‘BZ_RUN_OK’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:33: error: ‘BZ_FLUSH_OK’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:34: error: ‘BZ_FINISH_OK’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:35: error: ‘BZ_STREAM_END’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:36: error: ‘BZ_SEQUENCE_ERROR’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:37: error: ‘BZ_PARAM_ERROR’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:38: error: ‘BZ_MEM_ERROR’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:39: error: ‘BZ_DATA_ERROR’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:40: error: ‘BZ_DATA_ERROR_MAGIC’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:41: error: ‘BZ_IO_ERROR’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:42: error: ‘BZ_UNEXPECTED_EOF’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:43: error: ‘BZ_OUTBUFF_FULL’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:44: error: ‘BZ_CONFIG_ERROR’ was not declared in this scope
libs/iostreams/src/bzip2.cpp:48: error: ‘BZ_FINISH’ was not declared in this scope
//mostly like above....

6.테스트

#include  
char const* greet()
{
   return "hello, world";
}

BOOST_PYTHON_MODULE(hello)
{
    using namespace boost::python;
    def("greet", greet);
}

코드 를 hello.cpp 로 저장 하고 so 라 이브 러 리 로 컴 파일 합 니 다.

g++ hello.cpp -o hello.so -shared -I/usr/include/python2.6 -I /usr/lib/python2.6/config/ -lboost_python

python 경 로 를 python 경로 로 설정 하고-lbost 를 추가 해 야 합 니 다.python,이 라 이브 러 리 이름 이 꼭 이것 은 아 닙 니 다./user/local/lib 에서 찾 아 보 세 요.
그리고 이 so 라 이브 러 리 가 있 는 디 렉 터 리 에서 python 에 들 어가 면 다음 과 같이 사용 할 수 있 습 니 다.

>>> import hello
>>> hello.greet()
'hello, world'

7.문제 및 해결 방안 테스트
문제 가 발생 하면:

/usr/bin/ld: cannot find -lboost_python
collect2: ld returned 1 exit status

해결 방안:
  • 확인/etc/ld.so.conf.d/관련 프로필 에 boostpython.so 가 있 는 디 렉 터 리
  • boost_python 라 이브 러 리 가 있 는 디 렉 터 리(기본적으로/usr/local/lib 에 설치)에는 libboost 가 존재 합 니 다.python.so,존재 하지 않 으 면 libboostpython.so.**libboost 에 소프트 링크 만 들 기python.so
  • 좋은 웹페이지 즐겨찾기