RTEMS를 Linux에서 Cross Compile 하기 위해서는 해당 Cross Compiler가 필요합니다.
(RTEMS: https://www.rtems.org/ ,https://en.wikipedia.org/wiki/RTEMS)
특히 지금 사용하고 있는 Sparc 프로세스에 맞추어 만들어진 Cross Compiler가 필요합니다.
Cross Compiler에 대한 설명은 https://en.wikipedia.org/wiki/Cross_compiler를 참고하시면 됩니다.
크로스 컴파일러를 사용할 수 있는 환경을 일일이 설치하려면 각 프로그램 사이의 버전에 대한 의존성을 확인해야 하므로 번거로울 수 있습니다.
따라서 저는 Gaisler 에서 제공하는 Sparc RTEMS Cross Compiler(RCC)를 다운받아서 설치를 하였는데, 해당 크로스 컴파일러는 Sparc(LEON, ERC32) 용 RTEMS를 Linux에서도 컴파일할 수 있도록 해줍니다.
하지만 이러한 컴파일러를 위해서는 리눅스 유틸리티 중에서 autoconf 와 automake를 요구합니다.
- autoconf: https://en.wikipedia.org/wiki/Autoconf
- automake: https://en.wikipedia.org/wiki/Automake
제가 RCC를 사용하는 시스템의 사양은 아래와 같습니다.
- OS: Ubuntu 14.04.1 LTS x86
- Compiler: sparc-rtems-4.10(gcc-4.4.6-1.2.14)
- Tools: autoconf-2.69, automake-1.9.6
툴의 설치 순서는 다음과 같습니다.
autoconf 설치 - automake 설치 - RCC 압축해제 및 폴더 이동 - 실행 경로 변수 추가(bash)
주의하실 점은 automake를 autoconf 전에 설치하면 에러가 발생할 수 있습니다.
1. autoconf 설치
1) 파일 압축해제
# tar -jxf autoconf-2.69.tar.bz2
2) 설정 준비 및 설정
(1) configure를 위해 디렉터리 생성
# mkdir autoconf-2.69/build
# cd autoconf-2.69/build
(2) 설정
# ../configure --prefix=/usr
3) 설치
# sudo make
# sudo make install
2. automake 설치
1) 파일을 압축해제 한다.
# tar -jxf automake-1.9.6.tar.bz2
2) 설정 준비 및 설정
(1) configure를 위해 디렉터리 생성
# mkdir automake-1.9.6/build
# cd automake-1.9.6/build
(2) 설정
# ../configure --prefix=/usr
3) 설치
# sudo make
# sudo make install
3. RCC 설치
1) RCC 압축해제
# tar -jxf sparc-rtems-4.10-gcc-4.4.6-1.2.14-linux.tar.bz2
2) 디렉터리 이동 (/opt/)
# mv -f rtems-4.10 /opt/
3) 환경변수 설정
# sudo vi ~/.bashrc
bashrc 파일에 다음을 입력한다.
# export PATH=/opt/rtems-4.10/bin:$PATH
위의 과정을 수행한 후, 환경 변수 설정이 잘 되었는지 확인하기 위해 명령 프롬프트에서 "sparc-rtems-" 명령을 입력한 후 tab을 눌러 자동완성이 되는지 확인합니다.
그리고 컴파일러가 잘 동작하는지 확인하기 위해 RTEMS 샘플 코드를 작성하여 컴파일이 정상적으로 동작하는지 확인합니다.
샘플 코드:
컴파일:
$ sparc-rtems-gcc -o main main.c |
만약 컴파일 과정에서 libgmp.so.3 혹은 libmpfr.so.1 에러가 발생하면 다음과 같이 해결할 수 있습니다.
해당 에러는 /usr/lib 디렉터리에 libgmp.so.3 파일이 존재하지 않아 발생하는 문제이기 때문에 아래와 같이 gmp를 설치해서 해결할 수 있습니다.
(gmp의 다운은 http://ftp.gnu.org/gnu/gmp/에서 받을 수 있습니다. 저는 5.1.3 버전을 사용하였습니다)
1) 압축해제
# tar xfz gmp-5.1.3.tar.gz
2) 설치
# ./configure
# sudo make
# sudo make install
3) 파일 복사
현재 gmp 라이브러리가 설치된 경로는 /usr/local/lib/ 로 해당 디렉터리에 있는 libgmp.so.x 파일을 /usr/lib/ 로 복사해 주어야 합니다.
5.1.3의 설치 결과로 libgmp.so.10 파일이 생성되었습니다.
# sudo cp /usr/local/lib/libgmp.so.10 /usr/lib/libgmp.so.3
해당 에러도 위의 에러와 마찬가지로 /usr/lib/ 에 해당 파일이 존재하지 않아서 발생하는 문제입니다.
그러므로 mpfr을 설치해서 해결할 수 있습니다.
(mpfr의 다운은 http://www.mpfr.org/mpfr-current/#download 에서 받을 수 있습니다. 저는 3.1.2 버전을 사용하였습니다)
1) 압축해제
# tar xfz mpfr-3.1.2.tar.gz
2) 설치
# ./configure
# sudo make
# sudo make install
3) 파일 복사
/usr/local/lib/ 에 있는 libmpfr.so.x를 /usr/lib/ 에 복사해 주어야 합니다. 3.1.2 버전에서는 libmpfr.so.4 파일이 생성되었습니다.
# sudo cp /usr/local/lib/libmpfr.so.4 /usr/lib/libmpfr.so.1
이후 다시 컴파일해서 정상적으로 동작하는지 확인합니다.
'IT > RTEMS' 카테고리의 다른 글
RTEMS 태스크의 실행 과정 (0) | 2016.09.30 |
---|---|
RTEMS 커널에 파일 추가 혹은 삭제하기 (0) | 2016.09.30 |
Sparc 계열을 위한 RTEMS 커널 컴파일 하기 (0) | 2016.09.30 |
RTEMS C 기본 소스코드 (0) | 2016.06.01 |