웹프로그래밍
Python Cross-Compile 파이썬 크로스컴파일 본문
Python2.6.5를 mips용으로 컴파일하는 과정을 정리하였다.
참고한 사이트들 에서는 PowerPC, ARM용으로 크로스컴파일 하였고 나는 크로스 컴파일러 관련 스트링을 내 환경에 맞도록 mipsel-linux 로 변경하여 같은 절차를 따라감으로써 컴파일을 완료할 수 있었다. 이와같은 사실로 미루어 다른 아키텍쳐용 크로스 컴파일러에도 적용할 수 있을것으로 기대한다.
컴파일 가능한 파이썬 버젼은 다음 웹페이지에서 확인할 수 있으며 해당 버젼에 대한 패치파일도 제공한다.
크로스 컴파일을 위해 어떠한 처리를 해야 하는지, 혹은 각 과정들이 어떠한 역할을 하는지 알고싶다면 다음 페이지를 참고하라. 위의 필자 또한 이 페이지를 참조한듯 하나 이 페이지는 2.1.1 버젼만을 다루고 있어서 실제 프로젝트에 적용할 일은 없을것이다. http://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html
선결조건 : 해당하는 플렛폼의 크로스 컴파일러가 설치되어 있어야 한다.
==========================================================================================
여기부터의 내용은 내가 작업한 절차를 기록한 것이며, 자신이 수정한 명령어와 비교용으로 사용할 수 있을것이다.
- 작업 디렉터리는 파이선 소스 디렉터리이머 디렉터리 내부에 패치 파일(첨부)이 존재해야 한다.
- 파란색 글씨는 사용하고자 하는 크로스컴파일러의 실행파일이름의 일부분이며 자신의 환경에 맞도록 수정한다.
- --prefix 변수는 파이선이 설치될 디렉터리이며 이 또한 자신이 원하는 디렉터리로 수정한다.
$ ./configure $ make python Parser/pgen $ mv python hostpython $ mv Parser/pgen Parser/hostpgen $ make distclean $ patch -p1 < Python-2.6.5-xcompile.patch $ CC=mipsel-linux-gcc CXX=mipsel-linux-g++ AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib ./configure --host=mipsel-linux --build=i686-pc-linux-gnu --prefix=/opt/nfsroot/python $ make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen BLDSHARED="mipsel-linux-gcc -shared" CROSS_COMPILE=mipsel-linux- CROSS_COMPILE_TARGET=yes |
나는 make이후 다음과 같은 메시지가 출력 되었다. 다음과 같은 모듈들이 빌드되지 않았으며 원인은 여러가지가 있을 수 있겠으나 참고한 웹페이지에는 이에대한 언급이 없다. 아레의 모듈들을 제외한 나머지는 인스톨이 가능하다.
============================================================================================
Failed to find the necessary bits to build these modules:
_hashlib _tkinter bsddb185
sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
Failed to build these modules:
_bsddb _curses _curses_panel
_sqlite3 _ssl binascii
bz2 dbm gdbm
nis readline zlib
============================================================================================
크로스컴파일러 라이브러리 디렉터리에 zlib관련 라이브러리와 헤더파일을 설치하면 다음중 binascii, zlib 등 설치할 때 zlib라이브러리가 필요한 모듈들을 컴파일 할 수 있다. 물론 크로스컴파일러로 컴파일 한 라이브러리여야 한다.
$ make install HOSTPYTHON=./hostpython BLDSHARED="mipsel-linux-gcc -shared" CROSS_COMPILE=mipsel-linux- CROSS_COMPILE_TARGET=yes prefix=/opt/nfsroot/Python-2.6.5/_install |
주의! 위와같이 작업했을 경우 타겟보드에서 파이썬을 실행할 때 경로를 /opt/nfsroot/....부터 잡게 되는것을 발견했다.. 그리하여 위의 명령을 다음과 같이 꿔주고.
$ make install HOSTPYTHON=./hostpython BLDSHARED="mipsel-linux-gcc -shared" CROSS_COMPILE=mipsel-linux- CROSS_COMPILE_TARGET=yes prefix=/Python-2.6.5/_install |
인스톨이 끝나면 /Python-2.6.5 디렉터리를 /opt/nfsroot/ 밑으로 이동시켜주도록 하자.
타겟보드설정
다음과 같이 실행파일의 심볼릭 링크를 /usr/bin 에 만들었다. 라이브러리경로는 PATH변수에 추가할 필요 없이 실행파일이 자동으로 경로를 찾아가는 것으로 보인다.
/usr/bin$ ln -s /Python-2.6.5/_install/bin/python python
.이상.
'리눅스Linux' 카테고리의 다른 글
우분투 프롬프트 바꾸기 (0) | 2016.07.13 |
---|---|
리눅스(Linux) ELF설명 (0) | 2016.07.13 |
리눅스(linux)에서 SVN 서버(server)설정 (0) | 2016.07.13 |
qt-embedded 를 mips로 크로스컴파일 시 에러처리 (0) | 2016.07.13 |
iptables와 netfilter를 Linux Kernel에 추가하기 (0) | 2016.07.13 |
Comments