2013년 11월 7일 목요일

amd64의 데비안 리눅스 시스템에서 i386 바이너리 실행하기

시스템은 졸지에 amd64로 변경하는 바람에

이전에 아무런 문제없이 사용하던 arm-none-eabi-gcc이 실행 되지 않는다.

좀 친절하게 아키텍쳐가 달라서 실행할 수 없다라는 메시지를 던져 주면 좋았으려만,

분명히 그 경로에 이 파일이 있는데 arm-none-eabi-gcc를 찾을 수 없다라는 말만해서

바이러스에 결린 건가 하는 생각만 했었다.

뭐 arm-none-eabi-gcc(https://launchpad.net/gcc-arm-embedded)의 관리자가 amd64 시스템에서 한번 더 컴파일해서

올려 주면 만사 해결이지만 아직은 그렇지 못하다.

그래서 어쩔 수 없이 amd64로 깔린 시스템에 다중 아키텍쳐를 설정하고

중복해서 i386 라이브러리를 설치해야 한다.

이 일련의 과정은 amd64의 jessie 데비안 시스템에서 이루어 졌다.

시스템에 부가적으로 i386 아키텍쳐 추가하기

 # dpkg --add-architecture i386  

그리고 패키지 저장소 정보를 업데이트 하자

 # apt-get update  

자 그럼 이제 arm-none-eabi-gcc를 실행하는데 필요한 라이브러리를 설치하자. 물론 i386 기반의 바이너리이어야 한다.

 # apt-get install libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386  

마지막으로 실행되는지 확인해 보도록 하자.

 # arm-none-eabi-gcc -v  

 Using built-in specs.  
 COLLECT_GCC=arm-none-eabi-gcc  
 COLLECT_LTO_WRAPPER=/home/daysleep/workspace/arm_projects/gcc-arm-none-eabi-4_7-2013q2/bin/../lib/gcc/arm-none-eabi/4.7.4/lto-wrapper  
 Target: arm-none-eabi  
 Configured with: /home/build/work/GCC-4-7-build/src/gcc/configure --target=arm-none-eabi --prefix=/home/build/work/GCC-4-7-build/install-native --libexecdir=/home/build/work/GCC-4-7-build/install-native/lib --infodir=/home/build/work/GCC-4-7-build/install-native/share/doc/gcc-arm-none-eabi/info --mandir=/home/build/work/GCC-4-7-build/install-native/share/doc/gcc-arm-none-eabi/man --htmldir=/home/build/work/GCC-4-7-build/install-native/share/doc/gcc-arm-none-eabi/html --pdfdir=/home/build/work/GCC-4-7-build/install-native/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-newlib --with-headers=yes --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/home/build/work/GCC-4-7-build/install-native/arm-none-eabi --build=i686-linux-gnu --host=i686-linux-gnu --with-gmp=/home/build/work/GCC-4-7-build/build-native/host-libs/usr --with-mpfr=/home/build/work/GCC-4-7-build/build-native/host-libs/usr --with-mpc=/home/build/work/GCC-4-7-build/build-native/host-libs/usr --with-ppl=/home/build/work/GCC-4-7-build/build-native/host-libs/usr --with-cloog=/home/build/work/GCC-4-7-build/build-native/host-libs/usr --with-libelf=/home/build/work/GCC-4-7-build/build-native/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for ARM Embedded Processors' --with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r  
 Thread model: single  
 gcc version 4.7.4 20130613 (release) [ARM/embedded-4_7-branch revision 200083] (GNU Tools for ARM Embedded Processors)   

댓글 없음:

댓글 쓰기