I am using an evaluation board with an ARM926EJ-S running Openembedded and I want to install python on it.

I successfully cross-compiled python 2.7.13 on my Fedora 25 with the linaro toolchain (releases.linaro.org/components/toolchain/binaries/6.2-2016.11/) like this :

CONFIG_SITE=config.site ./configure --build=x86_64-linux-gnu --host=arm-linux-gnueabihf --disable-ipv6 --enable-unicode=ucs4

I had to do a config.site because during the compilation it asked me to precise :


And I put "no" to both of them like this guy did : datko.net/2013/05/10/cross-compiling-python-3-3-1-for-beaglebone-arm-angstrom/

Then I test to add :


Because it worked for another lib (pjsip), but unfortunately it didn't worked so I found this solution :


Here : github.com/jedisct1/libsodium/issues/274

And this was for an error during the configuration asking me to do so :


Then the configuration went well, so the make. To do the make install, because I had to install it on my board, I did :

make install DESTDIR=root@IP_ADRESS

This worked too, python is installed in root@IP_ADRESS/usr/local/lib/python2.7.

But I can't find it in my board, nor launch the python shell.

So I try this :

export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib"

Like answered here : stackoverflow.com/questions/4743233/is-usr-local-lib-searched-for-shared-libraries

This doesn't change anything, and I figure out that /usr/local/lib does not exist... And I found that my pjsip lib is not installed too...

Do you know where my libs went ? And how I can use them ?

Thank you !


Found the solution, in fact when you do :

make install DESTDIR=root@IP_ADRESS

It is not going to install it to root@IP_ADRESS, but it is creating a folder named "root@IP_ADRESS"...

So I tar.bz2 all the files contained in this folder, send them with scp on my board and copy all the folders and files in the /usr/ of my board.

But python is not working, when I try to launch it:

~# python
-sh: /usr/bin/python: cannot execute binary file

Is it because during the config part, the --host is not the good one?


I found the solution. The board I use is the TMDSLCDK138 integrating an OMAPL138 (ARM926EJ-S + DSP).

For those trying to cross-compile Python 2.7 for this board running the Arago SDK here is the way! I am working on Ubuntu 16.04.

First install the Arago toolchain:

NOT THIS ONE: http://software-dl.ti.com/sdoemb/sdoemb_public_sw/arago_toolchain/2011_09/index_FDS.html (Because it is DEPRECATED!!)

But the one in the mcsdk_1_01_00_02_setuplinux.bin!

wget http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mcsdk/latest1/exports/mcsdk_1_01_00_02_setuplinux.bin
chmod +x mcsdk_1_01_00_02_setuplinux.bin
sudo ./mcsdk_1_01_00_02_setuplinux.bin

I install it in /opt/ti/.


cd /opt/ti/mcsdk_1_01_00_02
chmod +x linux-devkit.sh
sudo ./linux-devkit.sh

It is going to ask you where you want to install it, I kept /usr/local/arago.2013-05/

Now do:

cd /usr/local/arago-2013.05/
. ./environment-setup

Normally your shell is going to "transform" and your command lines are performing with:


Ok, here you have finished installing the GOOD Arago toolchain.

Now cross-compiling and installing Python:

I did all the other commands in this linux-devkit shell.

wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
tar -Jxvf Python-2.7.13.tar.xz
cd Python-2.7.13/

Now create a file named config.site (because if you don't you get an error asking you to do so):

touch config.site
gedit config.site

Add those two lines in this file:


Now you can do the ./configure like so:

CONFIG_SITE=config.site ./configure --host=arm-arago-linux --prefix=/home/YOUR_USER/MY_BOARD_python --build=x86_64-linux-gnu --disable-ipv6
make install

Now you just have to compress your MY_BOARD_python folder, scp it to your board with:

tar -jcvf MY_BOARD_python.tar.bz2 MY_BOARD_python/
scp MY_BOARD_python.tar.bz2 root@IP_ADRESS:~/

Now on your board:

tar -jxvf MY_BOARD_python.tar.bz2
cp -R MY_BOARD_python/* /usr/

And now if you type Python:

root@omapl138-lcdk:~# python
Python 2.7.13 (default, Feb 23 2017, 16:37:33) 
[GCC 4.5.3 20110311 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> HURAYY!!

Hope this is going to help!

  • 1
    The transfer part can be simplified to: tar cf - MY_BOARD_python|ssh root@IP_ADRESS 'cd /usr ; tar xf -' Mar 30 '18 at 12:44
  • The steps work with build and run. However when setting up a virtualenv, many packages are missing. I eventually figured out to add packages to Modules/Setup.local file. Though not sure what the right/official solution to that could be.
    – minghua
    Dec 22 '19 at 9:04


hf stands here for hardware float support ARM926EJ-S does not support hardware floating operations. Resulting binary can not be executed on target board.

see related question: How do determine whether Linux board is using hardware FPU or not?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.