Pythonクロスコンパイル

Pythonクロスコンパイル

私はOpenembeddedを実行しているARM926EJ-Sと評価ボードを使用しており、ここにPythonをインストールしたいと思います。

以下のように、linaroツールチェーン(releases.linaro.org/comComponents/toolchain/binaries/6.2-2016.11/)を使用してFedora 25でPython 2.7.13を正常にクロスコンパイルしました。

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

コンパイル時に正確である必要があるため、config.siteを作成する必要があります。

ac_cv_file__dev_ptmx=no/yes
ac_cv_file__dev_ptc=no/yes

私はこの人のように両方の人に「いいえ」と言います:datko.net/2013/05/10/cross-compiling-python-3-3-1-for-beaglebone-arm-angstrom/

次に、以下を追加してテストします。

--host=arm-elf-linux

他のライブラリ(pjsip)では動作しますが、残念ながら動作しないため、次の解決策が見つかりました。

--host=arm-unknown-linux-gnueabihf

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

これは、構成中にこれを実行するように要求するエラーが発生したためです。

--desable-ipv6

それでは構成が順調に進んだので作ってみてください。取り付けるにはボードに取り付ける必要があるため、次のようにしました。

make install DESTDIR=root@IP_ADRESS

これも動作します。 Python は root@IP_ADRESS/usr/local/lib/python2.7 にインストールされます。

しかし、私のボードには見つからず、Pythonシェルを起動できません。

だから私はこれを試してみます:

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

ここに答えたように:stackoverflow.com/questions/4743233/is-usr-local-lib-searched-for-shared-libraries

これは何も変わりません。 /usr/local/libが存在しないことがわかりました...そして私のpjsip libもインストールされていないことに気づきました...

私の図書館がどこに行ったのか知っていますか?どうやって使うの?

ありがとうございます!

編集する:

実際、次のことを行ったときに解決策を見つけました。

make install DESTDIR=root@IP_ADRESS

root@IP_ADRESSにはインストールしませんが、「root@IP_ADRESS」というフォルダを作成します。

そのため、このフォルダに含まれているすべてのファイルをtar.bz2にscpして自分のマザーボードにコピーし、私のマザーボードの/ usr /にあるすべてのフォルダとファイルをコピーします。

しかし、Pythonを起動しようとするとうまくいきません。

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

構成セクションの--hostが良いものではないからですか?

答え1

解決策が見つかりました。私が使用したボードは、OMAPL138(ARM926EJ-S + DSP)が統合されたTMDSLCDK138です。

このボード用のPython 2.7をクロスコンパイルし、Arago SDKを実行したい人のための方法は次のとおりです。 Ubuntu 16.04を使用しています。

まず、Aragoツールチェーンをインストールします。

そうではありません:http://software-dl.ti.com/sdoemb/sdoemb_public_sw/arago_toolchain/2011_09/index_FDS.html (これ以上使われていないからです!)

しかし、それらの一つ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

にインストールしました/opt/ti/

それから:

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

どこにインストールするかを尋ねるメッセージが表示されます。/usr/local/arago.2013-05/

今それをする:

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

通常、シェルは「変換」され、コマンドラインは次を実行します。

[linux-devkit]:/usr/local/arago-2013.05/>

さて、ここでGOOD Aragoツールチェーンのインストールが完了しました。

これでPythonをクロスコンパイルしてインストールします。

このシェルで他のすべてのコマンドを実行しましたlinux-devkit

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/

これで、次のようなファイルが作成されますconfig.site(そうしないと、そうするようにエラーが発生するためです)。

touch config.site
gedit config.site

このファイルに次の2行を追加します。

ac_cv_file__dev_ptmx=no
ac_cv_file__dev_ptc=no

これで./configure、次のことができます。

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

scpこれで、MY_BOARD_pythonフォルダをボードに圧縮できます。

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

今ボードから:

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

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!!

役に立ったことを願っています!

答え2

--host=arm-linux-gnueabihf

ここで、hf はハードウェア浮動小数点サポートを表します。 ARM926EJ-Sはハードウェア浮動小数点演算をサポートしません。結果のバイナリはターゲットボードで実行できません。

関連質問を見る: LinuxマザーボードがハードウェアFPUを使用しているかどうかはどうすればわかりますか?

関連情報