ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 64비트 우분투 안드로이드 리눅스 빌드 시 gnueabi 에러
    개발 팁/안드로이드 2012. 3. 22. 14:12
    반응형
    처음 안드로이드 개발을 시작하려고 64비트 우분투 리눅스를 설치하고,
    코드소서리 툴체인을 설치한 후 아래 에러 때문에 고생한 사람이 있을 것이다.

    ---------------------------------------------------------
    arm-none-linux-gnueabi-gcc: No such file or directory

    또는

    arm-none-linux-gnueabi-gcc: command not found

    또는

    arm-none-linux-gnueabi-gcc: cannot execute binary files
    ---------------------------------------------------------

    file 명령으로 arm-none-linux-gnueabi-gcc 파일의 속성을 살펴보면,
    ELF 32-bit LSB executable로 나온다. 즉 툴체인이 32비트 바이너리로 빌드되어 있는 것이다.
    (코드 소서리 G++ 문서에도 기술되어 있음)

    그럼 이것이 64비트 환경에서 문제가 됨을 생각할 수 있을 것이다. 그럼 어떤 문제가 있을까? 먼저 답을 얘기하면, 이 파일(32비트)이 사용하는 32비트 버전의 공유 라이브러리가 없는 것이다. 64비트 우분투는 기본적으로 64비트 공유 라이브러리만 설치된다. 그런데 에러 메시지를 보면 사실 좀 엉뚱하다. 원래는 특정 버전의 공유 라이브러리가 없다는 메시지가 나와야 할 것이다.

    arm-none-linux-gnuabi-gcc 파일에서 사용하는 32비트 버전의 라이브러리는 /lib32/ld-linux.so.2(ld.so 다이너믹 링커/로더의 32비트 버전)과 /lib32/libc.so.6(C 라이브러리의 32비트 버전)이며, 이들은 모두 libc6-i386 패키지(AMD64 환경에서 돌아가는 32비트 라이브러리 모음)에 들어 있다. 따라서 libc6-i386 패키지를 설치하자.

    # apt-get install libc6-i386

    이제 ldd arm-none-linux-gnuabi-gcc해 보면 위 사항을 확인할 수 있다. (불행하게도, 32비트 라이브러리를 설치하기 전에는 해당 파일에 대한 ldd 명령이 제대로 동작하지 않는다. 이것이 동작했더라면 많은 사람들이 고생하지 않았을 것을...)

    * 추가 참고 사이트

    반응형

    댓글

Designed by Tistory.