2012-07-08 2 views
0

문제점 : Boost (locks.hpp)를 사용하여 코드를 작성했습니다. 내 서버에서 x64 우분투 (Linux)를 실행 중입니다. -m64으로이 코드를 컴파일하면 잘 작성됩니다. 내가 잘못 뭐하는 거지G ++에서 Boost for x86을 사용하여 코드를 컴파일 할 수 없음

g++ -fPIC -m32 -shared -Wl,-soname,test.so -ldl -o test.so test.cpp -lboost_thread 

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libboost_thread.so when searching for -lboost_thread 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libboost_thread.a when searching for -lboost_thread 
/usr/bin/ld: skipping incompatible //usr/lib/libboost_thread.so when searching for -lboost_thread 
/usr/bin/ld: skipping incompatible //usr/lib/libboost_thread.a when searching for -lboost_thread 
/usr/bin/ld: cannot find -lboost_thread 
collect2: ld returned 1 exit status 

: 나는 -m32에 대해 컴파일 할 때, 나는 이러한 오류를 얻을? 감사!

+1

을 : 당신이 부스트에는 32 비트 버전이 없을 수도 있습니다를 (좀 나는 "호환되지 않는 해석 얼마나 물건 ") ... – MFH

+3

당신은 확실히 32 비트 부스트 라이브러리를 설치하셨습니까? – fvu

+0

@fvu x64 우분투에 32 비트 부스트 라이브러리를 설치하라는 명령을 내줄 수 있습니까? – Robert

답변

2

스레드 라이브러리는 32 비트 버전이 필요합니다. answer 질문에 이미 stackoverflow.com에 있습니다. 소스에서 부스트를 빌드 할 때 주소 모델 옵션을 사용하십시오. Boost는 Linux에서 빌드 할 때 큰 documentation을 제공합니다. 한번에 32 비트 부스트 패키지 설치

bjam address-model=32 
+0

당신의 대답에 감사드립니다. 이 컴파일 된 헤더와 libs를 g ++ 명령에 어떻게 추가 할 수 있습니까? – Robert

+0

부스트 "bcp"유틸리티를 사용할 수 있습니다 : http://www.boost.org/doc/libs/1_50_0/tools/bcp/doc/html/index.html – Dan

+0

@ Dan 만약 64 비트에서 BCP를 사용한다면 컴퓨터에서 생성 된 폴더를 32 비트 시스템으로 이동하면 여전히 작동합니까? –

3

: 나는 ++ G와 경험이없는 동안

sudo apt-get install libboost-thread-dev:i386 
+0

불행히도 현재의 64 비트 개발 환경 (컴파일러와 많은 패키지)을 강제로 대체하기 때문에 강제적입니다. 32 비트와 64 비트를 나란히 사용하는 방법이 있습니까? – arielf

+0

@ 자기 자신, 예, 있습니다.하지만 우분투는 모릅니다. 그래서 어떻게해야할지 모르겠습니다. 위의 명령이 새로운 패키지를 추가하는 것보다 _replaces_ 무엇이든 놀랍습니다. –

+0

제 경험상, 이것은 단지 부스트 문제입니다. 나는 여러 가지 (C 언어) 라이브러리를 나란히 설치했다 (멀티 아치 : 32 및 64 비트). 부스트'* -dev : i386' 패키지 제작자가 기본 (amd64) boost'-dev' 패키지와 충돌하게 만든 이유를 잘 모릅니다. 64 비트 버전의 부스트에 의존하는 여러 패키지가 이미 설치/설치되어 있기 때문에': i386' 패키지의'replace' 절은 1) 64 비트 부스트 버전을 제거하고 2) 그것에 의존하는 패키지. :( – arielf

관련 문제