Tried to Cross Compile Python 2.6.2 For my ARM board, got success to successfully port python on ARM board, On ARM board Embedded Linux is already ported and running fine.
==>>Â
Here are simple steps to Cross compile python for ARM target board.
1) setup ARM tool chain with X11
2) export PKG_CONFIG_PATH
install dependencies
====================
Dependencies taken from DEBIAN
——————————
1) libdb
copy
2) libsqlite3
copy and change prefix in sqlite3.pc
3) ncursesw
copy
Dependencies installed from source
———————————–
1) bzip2
edit Makefile
CC=arm-linux-gcc
AR=arm-linux-ar
RANLIB=arm-linux-ranlib
PREFIX=your_toolchain_prefix_path
make
make install
2) gdbm
./configure –host=arm-linux –target=arm-linux –prefix=/xxx/yyy –enable-shared
make
make install
3) tcl-8.4.19
cd to unix folder
export ac_cv_func_strtod=yes
export tcl_cv_strtod_buggy=1
CC=arm-linux-gcc ./configure –host=arm-linux –prefix=/xxx/yyy
make
make install DESTDIR=/xxx/yyy
Note: dont install in prefix otherwise tk is not compiling.
4) tk-8.4.19
./configure –host=arm-linux CC=arm-linux-gcc
–prefix=/xxx/yyy –with-tcl=<path to unix folder in source of tcl>
make
make install
Note: you may have to move X11R6 from toolchain to /usr because its looking  in /usr for the X11 libs. if you do so remember to take backup of your /usr/X11R6 and then restore when you are done cross compiling python. Later find out why Makefiles are looking for X11R6 in /usr and change the path in those Makefiles..
5) readline-6.1
./configure
make
make install
6) openssl-0.9.8
There is no need to type configure, a Makefile is already existing. We just need to edit it and change it with way:
INSTALLTOP=/opt/external_packages/openssl/0.9.8g/compiled/xxx-yyy-linux-gnu
OPENSSLDIR=/opt/external_packages/openssl/0.9.8g/compiled/xxx-yyy-linux-gnu
CC= xxx-yyy-linux-gnu-gcc
AR=xxx-yyy-linux-gnu-ar $(ARFLAGS) r
RANLIB= xxx-yyy-linux-gnu-ranlib
To compile and install the OpenSSL project, type successively make and make install. You should find the directories and files listed above under /opt/external_packages/openssl/0.9.8g/compiled/xxx-yyy-linux-gnu/.
change pkg-config files
Patching Python-2.6.2 before crosscompile
—————————————–
1) ./configure
2) make python Parser/pgen
3) mv python hostpython
4) mv Parser/pgen Parser/hostpgen
5) make distclean
6) apply the patch Python-2.6.2-xcompile.patch
patch -p1 < Python-2.6.2-xcompile.patch
7) In Modules/Setup.config and setup.py according to
Setup.config and setup.py (TODO: make patches for setup.py and Setup.config).
8) edit Modules/getaddrinfo.c and change “u_” to “unsigned ”
Compiling Python-2.6.2
———————-
CC=arm-linux-gcc CXX=arm-linux-g++ AR=arm-linux-ar RANLIB=arm-linux-ranlib ./configure –host=arm-linux –build=i686-pc-linux-gnu –prefix=/xxx/yyy
make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen BLDSHARED=”arm-linux-gcc -shared” CROSS_COMPILE=arm-linux- CROSS_COMPILE_TARGET=yes
make install HOSTPYTHON=./hostpython BLDSHARED=”arm-linux-gcc -shared” CROSS_COMPILE=arm-linux- CROSS_COMPILE_TARGET=yes prefix=~/Python-3.1.2
Dependencies – Setup.config and setup.py are configuration files are required to be modify for ARM board.
Downloads required for Cross Compiling Python for Embedded Linux
Note -Rename python_setup_file to setup.py
Links -Â Download Python
No related posts.
Tags: embedded linux, linux
This entry was posted on Saturday, July 10th, 2010 at 2:19 am and is filed under Tech-Tips, Tips & Tricks. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
#1 written by admin July 10th, 2010 at 02:45
Cross Compiling Python for Embedded Linux
#2 written by admin July 12th, 2010 at 00:22
python 2.6 configure setup.py “cross compile” modules