2015-01-19 15 views
4

방금 ​​Clang 3.5를 64 비트 Mint OS (버전 17)에 설치했습니다. 내 프로그램을 32 비트로 컴파일하려고하는데, 문제가있다.Clang으로 컴파일 할 때 64 비트 Mint OS에서 32 비트 라이브러리를 찾지 못함

$ clang++ -m32 -Wl,--verbose test.cpp | grep libgcc 
/usr/bin/ld: skipping incompatible /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/libstdc++.so when searching for -lstdc++ 
/usr/bin/ld: skipping incompatible /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/libstdc++.a when searching for -lstdc++ 
/usr/bin/ld: cannot find -lstdc++ 
/usr/bin/ld: skipping incompatible /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so when searching for -lgcc_s 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.so succeeded 
/usr/bin/ld: cannot find -lgcc_s 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/libgcc_s.a failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libgcc_s.so failed 
/usr/bin/ld: skipping incompatible /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libgcc_s.a failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libgcc_s.so failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libgcc_s.a failed 
attempt to open /usr/bin/../lib/i386-linux-gnu/libgcc_s.so failed 
/usr/bin/ld: cannot find -lgcc 
attempt to open /usr/bin/../lib/i386-linux-gnu/libgcc_s.a failed 
attempt to open /usr/bin/../lib32/libgcc_s.so failed 
attempt to open /usr/bin/../lib32/libgcc_s.a failed 
attempt to open /lib/i386-linux-gnu/libgcc_s.so failed 
attempt to open /lib/i386-linux-gnu/libgcc_s.a failed 
attempt to open /lib/../lib32/libgcc_s.so failed 
attempt to open /lib/../lib32/libgcc_s.a failed 
attempt to open /usr/lib/i386-linux-gnu/libgcc_s.so failed 
attempt to open /usr/lib/i386-linux-gnu/libgcc_s.a failed 
attempt to open /usr/lib/../lib32/libgcc_s.so failed 
attempt to open /usr/lib/../lib32/libgcc_s.a failed 
attempt to open /usr/lib/x86_64-linux-gnu/../../lib32/libgcc_s.so failed 
attempt to open /usr/lib/x86_64-linux-gnu/../../lib32/libgcc_s.a failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libgcc_s.so failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libgcc_s.a failed 
attempt to open /usr/bin/../lib/libgcc_s.so failed 
attempt to open /usr/bin/../lib/libgcc_s.a failed 
attempt to open /lib/libgcc_s.so failed 
attempt to open /lib/libgcc_s.a failed 
attempt to open /usr/lib/libgcc_s.so failed 
attempt to open /usr/lib/libgcc_s.a failed 
attempt to open /usr/i386-linux-gnu/lib32/libgcc_s.so failed 
attempt to open /usr/i386-linux-gnu/lib32/libgcc_s.a failed 
attempt to open /usr/x86_64-linux-gnu/lib32/libgcc_s.so failed 
attempt to open /usr/x86_64-linux-gnu/lib32/libgcc_s.a failed 
attempt to open //usr/local/lib/i386-linux-gnu/libgcc_s.so failed 
attempt to open //usr/local/lib/i386-linux-gnu/libgcc_s.a failed 
attempt to open //usr/local/lib32/libgcc_s.so failed 
attempt to open //usr/local/lib32/libgcc_s.a failed 
attempt to open //lib/i386-linux-gnu/libgcc_s.so failed 
attempt to open //lib/i386-linux-gnu/libgcc_s.a failed 
attempt to open //lib32/libgcc_s.so failed 
attempt to open //lib32/libgcc_s.a failed 
attempt to open //usr/lib/i386-linux-gnu/libgcc_s.so failed 
attempt to open //usr/lib/i386-linux-gnu/libgcc_s.a failed 
attempt to open //usr/lib32/libgcc_s.so failed 
attempt to open //usr/lib32/libgcc_s.a failed 
attempt to open //usr/local/lib/libgcc_s.so failed 
attempt to open //usr/local/lib/libgcc_s.a failed 
attempt to open //lib/libgcc_s.so failed 
attempt to open //lib/libgcc_s.a failed 
attempt to open //usr/lib/libgcc_s.so failed 
attempt to open //usr/lib/libgcc_s.a failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/libgcc.so failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/libgcc.a succeeded 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libgcc.so failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../i386-linux-gnu/libgcc.a failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libgcc.so failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../lib32/libgcc.a failed 
attempt to open /usr/bin/../lib/i386-linux-gnu/libgcc.so failed 
attempt to open /usr/bin/../lib/i386-linux-gnu/libgcc.a failed 
attempt to open /usr/bin/../lib32/libgcc.so failed 
attempt to open /usr/bin/../lib32/libgcc.a failed 
attempt to open /lib/i386-linux-gnu/libgcc.so failed 
attempt to open /lib/i386-linux-gnu/libgcc.a failed 
attempt to open /lib/../lib32/libgcc.so failed 
attempt to open /lib/../lib32/libgcc.a failed 
attempt to open /usr/lib/i386-linux-gnu/libgcc.so failed 
attempt to open /usr/lib/i386-linux-gnu/libgcc.a failed 
attempt to open /usr/lib/../lib32/libgcc.so failed 
attempt to open /usr/lib/../lib32/libgcc.a failed 
attempt to open /usr/lib/x86_64-linux-gnu/../../lib32/libgcc.so failed 
attempt to open /usr/lib/x86_64-linux-gnu/../../lib32/libgcc.a failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libgcc.so failed 
attempt to open /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../libgcc.a failed 
attempt to open /usr/bin/../lib/libgcc.so failed 
attempt to open /usr/bin/../lib/libgcc.a failed 
attempt to open /lib/libgcc.so failed 
attempt to open /lib/libgcc.a failed 
attempt to open /usr/lib/libgcc.so failed 
attempt to open /usr/lib/libgcc.a failed 
attempt to open /usr/i386-linux-gnu/lib32/libgcc.so failed 
attempt to open /usr/i386-linux-gnu/lib32/libgcc.a failed 
attempt to open /usr/x86_64-linux-gnu/lib32/libgcc.so failed 
attempt to open /usr/x86_64-linux-gnu/lib32/libgcc.a failed 
attempt to open //usr/local/lib/i386-linux-gnu/libgcc.so failed 
attempt to open //usr/local/lib/i386-linux-gnu/libgcc.a failed 
attempt to open //usr/local/lib32/libgcc.so failed 
attempt to open //usr/local/lib32/libgcc.a failed 
attempt to open //lib/i386-linux-gnu/libgcc.so failed 
attempt to open //lib/i386-linux-gnu/libgcc.a failed 
attempt to open //lib32/libgcc.so failed 
attempt to open //lib32/libgcc.a failed 
attempt to open //usr/lib/i386-linux-gnu/libgcc.so failed 
attempt to open //usr/lib/i386-linux-gnu/libgcc.a failed 
attempt to open //usr/lib32/libgcc.so failed 
attempt to open //usr/lib32/libgcc.a failed 
attempt to open //usr/local/lib/libgcc.so failed 
attempt to open //usr/local/lib/libgcc.a failed 
attempt to open //lib/libgcc.so failed 
attempt to open //lib/libgcc.a failed 
attempt to open //usr/lib/libgcc.so failed 
attempt to open //usr/lib/libgcc.a failed 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
: 나는 다음과 같은 출력을 얻을

$ clang++ -m32 -Wl,--verbose test.cpp | grep libgcc 

:

#include <iostream> 

int main() 
{ 
    std::cout << "Hello" << std::endl; 
} 

내가 다음 명령을 실행

나는 다음과 같은 코드를 사용하여 내 홈 디렉토리에 test.cpp라는 파일이

내가 할 수있는 모든 인터넷 검색 및 자체 조사를 수행했습니다. 왜이 간단한 예제가 작동하지 않는지 확인하십시오. 아무도 제가 누락 된 걸 알아낼 수 있습니까?

+0

당신은 '그 소리가 ++ -v -m32 -Wl, 전체 출력을 게시하시기 바랍니다 수 있을까요? –

답변

3

multilib g ++ sudo apt-get install g++-multilib을 설치해야합니다.

g++-multiliblibc6-i386과 같이 필요한 모든 종속성을 설치해야합니다.

+0

아직 초점을 맞추기는하지만 완전히 제 질문을 수정했습니다. 권장 패키지를 모두 설치했지만 여전히 실패합니다. 제 질문에 대해 다시 한번 살펴 보시겠습니까? 감사. –

+0

@ void.pointer : Mint 17에서 clang-3.4, 3.5를 사용해보세요. 아마도 스냅 샷 (시험판) 빌드 일 것입니다. 도움이되지 않는다면,'gcc'와'g ++'를 제거한 다음 multilib 버전을 설치하십시오. 또한'-m32'가 gcc 설치와 함께 작동하는지 확인하십시오. – Thomas

+0

clang 3.4를 사용하여 문제를 해결 했으므로 다른 작업을 수행 할 필요가 없었습니다. –

6

여기에 연타로 크로스 컴파일 할 때의 확인 작업은 다음과 같습니다

  • 는 32 비트 (86) C++ libs가 설치되어 있습니까? (가지고 계신 것으로 보이지만 그냥 확인하십시오.)

  • --sysroot=<location of your 32-bit multilibs>을 사용해보세요. 이렇게하면 하드 코드 된 경로를 사용하는 대신 특정 디렉토리에있는 bin, 및 include 디렉토리를 검색하도록 지시합니다.

  • 포함 및 lib 디렉토리가있는 곳에서 clang에게 더욱 구체적으로 알려면 -I-L 옵션을 사용해보십시오.

  • 위의 경우 모두 최악의 경우 : -B <path> 옵션을 사용하여 clang에게 구체적으로 사용할 링커를 알려줍니다. 이 옵션을 이전 옵션과 함께 추가하십시오. 자세한 test.cpp` -합니다 (-B 옵션이 적용되지 않습니다 있지만)

더 구체적인 내용 http://clang.llvm.org/docs/CrossCompilation.html 참조