최근에 (주)FALINUX에서 S3C6410 제품을 내 놓았습니다. S3C6410 보드에서 사용하는 크로스 컴파일러를 오늘에야 알게 되었는데, 이름이 좀 깁니다. arm-generic-linux-gnueabi-gcc 길죠? 문제는 이 크로스 컴파일러를 설치하고 컴파일을 하면 에러가 발생합니다.
]$ arm-generic-linux-gnueabi-gcc test.c
/usr/libexec/gcc/arm-generic-linux-gnueabi/4.3.2/cc1: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory ]$
아니 이게 무슨 말이레? 지금껏 ARM보드와 MIPS 보드를 위한 크로스 컴파일러를 사용해 보았지만 처음 보는 에러입니다. 메시지를 보면 mpfr 라이브러리가 없다는 얘기인데, mpfr? 이게 무슨 라이브러리인가? 검색해 보니 multiple-precision floating-point 라이브러리랍니다. 자세한 설명은 영어라서 읽기를 포기하고 빨리 설치해서 컴파일 에러를 피하고 싶었습니다.
그런데, mpfr 만 설치하면 안 되네요. 그전에 gmp를 먼저 설치해야 합니다. gmp는 또 뭐래? 으~
gmp 라이브러리 설치
gmp는 아래의 사이트에서 내려 받을 수 있습니다.
여러 버전이 나오는데, 이글을 쓰는 최근 버전은 4.3.1입니다. 파일을 적당한 곳에 내려 받아 아래의 순서에 따랄 설치합니다.
]# tar zxvf gmp-4.3.1.tar.gz ]# cd gmp-4.3.1 ]# ./configure ]# make ]# make check ]# make install
mpfr 설치
mpfr은 아래의 사이트에서 구할 수 있습니다.
이글을 작성하는 중의 최근 버전은 2.4.1입니다. 적당한 곳에 내려 받아 아래의 순서에 따라 설치합니다.
]# tar zxvf mpfr-2.4.1.tar.gz ]# cd mpfr-2.4.1 ]# ./configure ]# make ]# make check ]# make install
컴파일 결과물을 /usr/lib로 이동
gmp와 mpfr 라이브러리 설치는 매우 간단합니다. 그러나 이렇게 설치하고 다시 컴파일해 보면 똑같은 "libmpfr.so.1: cannot open shared object file" 에러가 발생합니다. 한참 고생하다가 알게되었는데, 위의 방법대로 설치를 하면 mpfr 라이브러리 설치 위치가 /usr/local/lib/ 안에 설치됩니다.
]# find / -name libmpfr.so.1 -print /usr/local/lib/libmpfr.so.1 ]#
libmpr 로 시작하는 라이브러리 파일이 /usr/local/lib에 있으면 안 되고, /usr/lib에 있어야 컴파일이 되더군요. 그래서 컴파일해서 얻어진 결과물을 /usr/lib로 이동 시킵니다.
]# mv -f /usr/local/lib/libgmp* /usr/lib
]# mv -f /usr/local/lib/libmpfr* /usr/lib
컴파일 다시 해 보기
arm-generic-linux-gnueabi-gcc 컴파일러를 이용하여 컴파일 해보십시오. 에러 없이 컴파일이 됩니다. 휴~
'Linux > Android' 카테고리의 다른 글
ADB를 바로 연결할수 있는 putty (1) | 2011.01.22 |
---|---|
안드로이드 - 트레이스뷰 프로파일링 (Traceview Profiling) (1) | 2011.01.17 |
logcat 사용법 정리 && 로그 보면서 파일로 저장하기 & (0) | 2010.11.07 |
유니코드 및 KS 코드 간단 정리 (0) | 2009.06.11 |
KSC5601 <-> UNICODE 변환 코드 (테이블 이용) (0) | 2009.06.11 |