64비트 우분투리눅스에서 32비트 리눅스 바이너리 파일 실행하기
- 리눅스(Linux) 활용
- 2016. 12. 6.
반응형
기본적으로 64비트 우분투리눅스에서 32비트 리눅스 바이너리 파일은 실행되지 않는다.
하지만 현재 개발용으로 사용 중인 PC는 64비트이고, 개발용 크로스컴파일러는 32비트 바이너리 파일이라.. 실행되도록 해 봤다.
PC 하드웨어는 Intel i7 64bit CPU이고, Ubuntu 버전은 16.04.1 LTS이다.
일단, 리눅스머신에 32비트 크로스컴파일러 파일을 복사해 놓고 실행해 보았다.
역시나 실패.
$ ./arm-fsl-linux-gnueabi-gcc
-bash: ./arm-fsl-linux-gnueabi-gcc: 그런 파일이나 디렉터리가 없습니다
예전에 ia32-libs 라이브러리를 설치해서 해결했던 기억이 있어서 ia32-libs의 설치를 시도해 본다.
하지만 설치는 실패하고, ia32-libs 대신에 두 개의 다른 라이브러리를 추천해 준다.
$ sudo apt-get install ia32-libs
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
ia32-libs 패키지를 사용할 수 없습니다. 하지만 다른 패키지가 참조하고 있습니다.
해당 패키지가 누락되었거나 지워졌다는 뜻입니다. 아니면 또 다른 곳에서
패키지를 받아와야 하는 경우일 수도 있습니다.
하지만 다음 패키지가 대체합니다:
lib32ncurses5 lib32z1
E: 'ia32-libs' 패키지는 설치할 수 있는 후보가 없습니다
lib32ncurses5를 설치해 본다.
성공.
이제부터 32비트 바이너리 파일을 실행할 수 있게 되었다.
$ sudo apt-get install lib32ncurses5
..
$ ./arm-fsl-linux-gnueabi-gcc
arm-fsl-linux-gnueabi-gcc: fatal error: no input files
compilation terminated.
hello world 프로그램(hello.c)을 만들어서 크로스컴파일해 본다.
여기서 다시 실패.
라이브러리를 링크시키지 못한다.
$ ./arm-fsl-linux-gnueabi-gcc -o hello hello.c
gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/tq-linaro-toolchain/bin/../libexec/gcc/arm-fsl-linux-gnueabi/4.6.2/cc1: error while loading shared libraries: libz.so.1: cannot open
shared object file: No such file or directory
lib32z1을 설치하고 다시 크로스컴파일해 본다.
드디어 성공.
$ sudo apt-get install lib32z1
....
$ ./arm-fsl-linux-gnueabi-gcc -o hello hello.c
$ file hello
hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter
/lib/ld-linux.so.3, for GNU/Linux 2.6.31, not stripped
결론적으로, 64비트 우분투리눅스에서 32비트 리눅스 바이너리 파일을 실행하기 위해서는, 최근 버전의 Ubuntu의 경우 lib32ncurses5와 lib32z1을 설치하면 된다.
'리눅스(Linux) 활용' 카테고리의 다른 글
리눅스 ip 유틸리티 사용법 : IPv4/IPv6 주소 관리 (0) | 2020.03.14 |
---|---|
우분투(Ubuntu) 리눅스에 ifconfig 설치하기 (0) | 2020.03.06 |
리눅스 시스템에서 IPv6 주소 설정/확인하기 (0) | 2020.03.06 |
xxd : 파일의 내용을 16진수 형식으로 확인(hex dump) (0) | 2020.02.10 |
동작 중인 프로세스를 프로세스 이름을 이용하여 강제 종료하기 (0) | 2019.11.05 |
리눅스 시스템시각 기준(UTC, KST) 변경 방법 (0) | 2019.11.01 |
리눅스 터미널 상의 bash 프롬프트 표시형식 설정 (0) | 2016.12.23 |
어렵지는 않은데 늘 까먹는 리눅스 명령어 (0) | 2016.12.11 |