私は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はハードウェア浮動小数点演算をサポートしません。結果のバイナリはターゲットボードで実行できません。