Python in a FriendlyArm (minicom 2440)

This post was developed as a project of Specialization in Mobile Devices Fatec-Jp subject in Python. We’ll talk over how to cross post the python compiler for ARM platform (FriendlyArm minicom 2440).

First let’s do cross-compile a Hello World in C before porting python to friendlyarm, and so we need to install the cross-compiling toolchains for ARM platform (arm-linux-gcc)

To do this we split the tutorial in a few steps:

Step 1: Install the arm-linux-gcc

To do the cross-compiler used the arm-linux-gcc-4.3.2.tgz, which is available at:                                      http://www.friendlyarm.net/dl.php?file=arm-linux-gcc-4.3.2.tgz

Unzip it in /usr/local/armgcc and then add the path in the path like this:
export PATH=/usr/local/armgcc/bin:$PATH

Step 2: Create a sample helloword in C and make the cross-compiler for arm

Create a C program helloworld.c

#include <stdio.h>
main(){
printf (“Hello World!\n”);
}

Make a normal build:                                                                                                                                                                                                                                                                                                                                                                                 gcc helloworld.c -o helloNormal

Then do:
file helloNormal

The output will be the one below, which shows that this file is compiled to processor pc:
helloNormal: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU / Linux 2.6.15, not stripped

With this file is not possible to run at friendlyarm they still did not cross-compiler.

To generate the binary cross-compiled arm to do so:
arm-linux-gcc -s helloworld.c -o helloArm

Now we have a program in C that can run on FriendlyArm, to be sure, let’s check the file:
file helloArm

The output will be the one below, which shows that this file is compiled to FriendlyArm:
helloArm: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, stripped

Okay, now just put the file in helloArm FriendlyArm and run:
./helloArm

As output we get:
Hello World!

Step 3: Porting python to FriendlyArm

We will download the python in http://www.python.org.
We will use the example version 2.6.5

Once you have downloaded the python will unpack it using tar:

tar -xvzf Python-2.6.5.tgz

The result is the creation of the directory Python-2.6.5, now enter the created directory:

cd Python-2.6.5

Now, execute the following commands to create the components of the host:

./configure

make python Parser/pgen

mv hostpython python

mv Parser/Parser pgen/hostpgen

make distclean

The next step is to download the correct patch for your version of python which is located in:
http://www.4shared.com/file/AuTr9Rf6/Python-265-xcompile.html

Then we will apply the patch:

patch -p1 < Python-2.6.5-xcompile.patch

Then run the following commands:

CC=ppc_6xx-gcc CXX=ppc_6xx-g++ AR=ppc_6xx-ar RANLIB=ppc_6xx-ranlib ./configure –host=ppc-linux –build=i686-pc-linux-gnu –prefix=/python

make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen BLDSHARED=”ppc-linux-gcc -shared” CROSS_COMPILE=ppc_6xx- CROSS_COMPILE_TARGET=yes

make  install HOSTPYTHON=./hostpython BLDSHARED=”ppc-linux-gcc -shared” CROSS_COMPILE=ppc_6xx- CROSS_COMPILE_TARGET=yes prefix=~/Python-2.6.5/_install

This will install the binaries and libs in ~/Python-2.6.5/_install.

Copy the entire _install directory to the device, setup the PATH environment variable to include the location of the Python executable and run:

python lib/Python-2.6/test/test___all___.py

To accelerate the import of Python modules, we recommend creating one. Zip, with that we will not need to copy “all” the files manually.

cd _install/lib/python2.6

zip -r -y python26.zip .

Copy the _install/bin/python to the /usr/bin directory on the target:

Copy the python26.zip file to the /usr/lib directory on the target:
Create a directory named python2.6 /usr/lib and copy it to the following directories:

./lib/python2.6/config

./lib/python2.6/lib-dynload

./lib/python2.6/site-packages

The structure of your directory should be like the one below:

/usr/lib # ls

python2.6  python26.zip

/python/lib/python2.6 # ls

config  lib-dynload  site-package

Set the environment variable PYTHONHOME para /usr/ and you will already be running python in his FriendlyArm

Further, this process will build only the binary python, So the libraries will not be running.

About these ads

Ainda sem comentários

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

%d blogueiros gostam disto: