2014-09-12 2 views
1

나는 인터넷 검색을하고 있었지만 해결책을 찾지 못했다. x64 비트 데비안 시스템에서 32 비트의 gcc로 C 프로그램을 컴파일하고 싶다. 나는 컴파일하려면 다음 명령을 사용내 코드가 x64에서 컴파일되고 x32에서 컴파일되지 않는 이유는 무엇입니까?

gcc -m32 -o programExecutable -L/usr/lib/i386-linux-gnu/ -I/home/secnok/polarssl- 
1.3.5/include/ -I/usr/local/include/libusb-1.0 main.c /home/secnok/polarssl- 
1.3.5/library/libpolarssl.a /usr/local/lib/libusb-1.0.a -lpthread -ludev 

을 나는이 출력 얻을 : 나는 도서관의 gcC++ cmultilib 및 IA32 - libs와 설치

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux gnu/4.7  
/../../../libudev.so when searching for -ludev /usr/bin/ld: skipping incompatible 
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../libudev.a when searching for -ludev 
/usr/bin/ld: skipping incompatible /usr/lib/libudev.so when searching for -ludev 
/usr/bin/ld: skipping incompatible /usr/lib/libudev.a when searching for -ludev 
/usr/bin/ld: cannot find -ludev 

합니다. 같은 방식으로 경로를 내 보냈습니다.

export LD_LIBRARY_PATH="/lib32:/usr/lib32:$LD_LIBRARY_PATH" 

여전히 컴파일되지 않았습니다. 이 코드는 x64에서 오류없이 컴파일되며, 단지 32 비트에 대해 동일한 코드를 컴파일하려고합니다.

+0

http://stackoverflow.com/questions/4250624/ld-library-path-vs-library-path –

+1

아마' libudev는 32 비트에서 사용할 수 없습니다. – ckruse

+0

x32는'-mx32' 컴파일러 스위치 (32 비트 길이 및 64 비트 모드의 포인터)로 활성화되는 모드입니다. '-m32'에 의해 활성화 된 모드는 i686입니다. 제목이 혼란 스럽습니다. –

답변

0

마지막으로 32 비트에서 직접 정적으로 컴파일하는 솔루션이 발견되어 현재 작동합니다. 이 방법으로 x64와 x86 사이의 라이브러리 호환성에 대해 걱정할 필요가 없다고 생각합니다.

관련 문제