2012-01-22 2 views
1

amd64 시스템에서 boost 1.48을 빌드하려고하지만 재배치 오류로 인해 공유 라이브러리가 빌드되지 않았습니다. 내가 -fPIC로 인해서 추측 한 이유는 그것이 문제를 해결할 수 없다는 것입니다. 보다 구체적으로, 여기boost 1.48과 공유 라이브러리를 빌드하지 못했습니다.

, 나는 트렁크에서 부스트, 무엇을 얻을

./b2 

는/usr/빈/LD : /usr/lib/gcc/x86_64-linux-gnu/4.4.5 /libstdc++.a(codecvt.o) : 공유 객체를 만들 때`vdable for std :: codecvt '에 대한 R_X86_64_32S를 사용할 수 없습니다. -fPIC /usr/lib/gcc/x86_64-linux-gnu/4.4.5/libstdc++.a 다시 컴파일 : 문자를 읽을 수 없습니다 : 잘못된 값을 collect2를 : LD 반환 나는 이러한

을 시도

1 개 종료 상태 설명 된 바와 같이

./bjam -d2 
./bjam address-model=64 cxxflags=-fPIC 

/하지만 도움이되지 않았다 여기

http://boost.2283326.n4.nabble.com/fPIC-option-for-boost-td3176976.html

논의했다. 나는 boostrap.sh로 설정 한 공유 라이브러리를 만들 수 없었다.

답변

0

표준 debian 스퀴즈 설치에서 mosh-1.2.2를 빌드하는 데 비슷한 문제가있었습니다. 이 나를 위해 일한 다음 :

# cd /usr/lib/gcc/x86_64-linux-gnu/4.4.5 
# rm libstdc++.so 
# ln -s ../../../x86_64-linux-gnu/libstdc++.so.6 libstdc++.so 

좀 더 구체적으로 설명하기 위해, 기존의 심볼릭 링크는 존재하지 않는 파일을 가리키는되었습니다

# cd /usr/lib/gcc/x86_64-linux-gnu/4.4.5 
# ls -l libstdc++.so 
.. 
lrwxrwxrwx 1 root root  23 May 3 2011 libstdc++.so -> ../../../libstdc++.so.6 
.. 

나는 정확한 파일 위치를 위치

# dpkg -S 'libstdc' 
.. 
libstdc++6: /usr/lib/x86_64-linux-gnu/libstdc++.so.6 
.. 

그런 다음 첫 번째 코드 세그먼트에서 설명한대로 심볼릭 링크를 복구하십시오.

내가 컴파일시에지고 있다고 오류 :이 특정 데비안 스퀴즈 서버가 부러 방법

make[3]: *** [mosh-client] Error 1 
make[2]: *** [all-recursive] Error 1 
make[1]: *** [all-recursive] Error 1 
make: *** [all] Error 2 
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.4.5/libstdc++.a(functexcept.o): relocation R_X86_64_32 against `std::bad_typeid::~bad_typeid()' can not be used when making a shared object; recompile with -fPIC 
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/libstdc++.a: could not read symbols: Bad value 

아니 생각. 나는 다른 짜내기 시스템에 문제없이 컴파일하고있다.

관련 문제