ZYNQ-Linux 開発 (8) Python ソース コードのクロスコンパイル インストールと Numpy ライブラリの使用のクロスコンパイル インストール

  • Pythonソースコードのクロスコンパイル

zynqプラットフォームの場合zynqボードによって直接コンパイルされたライブラリ ファイルの形式はハード浮動小数点型であり、ライブラリ ファイルがeclipseで参照される場合はソフト浮動小数点型が必要となるため、ライブラリ ファイルは zynq ボードによって直接コンパイルされます。zynqプラットフォーム開発ボードは、クロスコンパイルできず、 eclipseで使用できない場合、 VFP形式が正しくないというエラーが表示されます。この問題を解決するには 2 つの方法があります。1 つはクロスコンパイル ツールを使用して仮想マシン内のライブラリ ソース コードをクロスコンパイルし、コンパイルされたライブラリ ファイルがソフト浮動小数点型になるようにする方法です。ボードを変更し、コンパイル オプションを変更して、ハード浮動小数点コンパイルをソフト浮動小数点コンパイルに変更します。2 番目の方法では、一部のライブラリ ソース コードの Makefile がソフトおよびハード浮動小数点コンパイルをサポートしていませ。仮想マシン内でのみクロスコンパイルできます。同時に、すべてのプラットフォーム ボードがデフォルトでハード浮動小数点でコンパイルされるわけではありません。たとえば、LS2088プラットフォーム ボードによってコンパイルされたライブラリ ファイルは、デフォルトでEclipseで直接呼び出すことができ、 VFPフォーマット エラーは発生しません。

Pythonソース コードをクロスコンパイルする前に、 PCバージョンのソース コードをコンパイルする、つまりX86プラットフォーム用にコンパイルする必要があります。

PC版のコンパイル手順:

  1. ソース コードの圧縮パッケージを任意のパスに配置し、ソース コードを解凍します: tar -xvf Python-3.4.0.tgz
  2. ソース コード ディレクトリを入力します: cd Python-3.4.0/
  3. configureを実行してMakefileを設定します

./configure --prefix=/home/daisy/python/python3.4pc

--prefix=の後には、PCバージョンのPythonがインストールされるパスが続きます

次のインターフェイスが表示され、Makefileが正常に生成されたことがわかります。

  1. ソースコードをコンパイルして、makeを実行します。

次のインターフェイスは、コンパイルが成功したことを証明するように表示されます。

  1. PC バージョンの Python をインストールするには、make installを実行します。

ARMバージョンのクロスコンパイルプロセス:

  1. コンソールで次のコマンドを順番に入力します。

echo ac_cv_file__dev_ptmx=yes > config.site

echo ac_cv_file__dev_ptc=yes >> config.site

エクスポート CONFIG_SITE=config.site

エクスポート CXX=arm-xilinx-linux-gnueabi-g++

エクスポート CC=arm-xilinx-linux-gnueabi-gcc

  1. configureを実行してMakefileを設定します

./configure --prefix=/home/daisy/python/python34 --host=arm-xilinx-linux-gnueabi --build=x86_64-pc-linux-gnu --enable-shared --disable-ipv6

--prefix=の後に、ARMバージョンの Pythonがインストールされるパスが続きます

--host= はターゲット プラットフォームです

--build= は現在コンパイルされたプラットフォームです

--enable-shared は .so 動的ライブラリを生成し、--disable-shared は .a 静的ライブラリを生成します

次のインターフェイスが表示され、Makefileが正常に生成されたことがわかります。

  1. PC 版でコンパイルしたファイルをクリアするには、make cleanを実行します。
  2. ソースコードをコンパイルして、makeを実行します。

次のインターフェイスは、コンパイルが成功したことを証明するように表示されます。

  1. Python のARMバージョンをインストールするには、 make installを実行します。

3.4.0 バージョンの場合、インストール後に次のエラーが表示されます。主な理由は、3.4 バージョンには pip が含まれていないためです。上位バージョンに pip ツールが付属している場合、エラーは報告されず、エラー レポートは無視してください。

  1. コンパイルが成功すると、インストール ディレクトリに次の 4 つのフォルダーが表示されます。

bin: Python 実行可能プログラム

インクルード: Python インターフェース関数ヘッダー ファイル

lib: Python インターフェース関数ライブラリ (.a および .so)

共有: クロスコンパイルには使用されません

これまでのところ、コード内で Python インターフェイス関数を参照するために必要なファイルがコンパイルされました。

  • numpyライブラリをインストールする

クロスコンパイルに使用する numpy ライブラリには、numpy フォルダー内の .h ファイルのみが必要であるため、Eclipse で呼び出される numpy ライブラリをクロスコンパイルする必要はありません。 numpy/core/include/numpy フォルダーを作成し、仮想マシンに配置して使用します。また、X86 プラットフォームに numpy ライブラリを手動でインストールするか、ARM プラットフォームに numpy ライブラリを手動でインストールしてから、そのディレクトリに対応する Python をインストールすることもできます。

lib/python3.4/site-packages/numpy/core/include/numpy フォルダーをコピーして使用することもできますが、C++ でコンパイルされた実行可能プログラムには、実行ボードまたはプラットフォームに numpy ライブラリがインストールされており、ロードできる必要があります。クロスコンパイルされたプログラムは実行中のプラットフォーム上の numpy ライブラリに依存するため、使用されます。以下では、まず X86 プラットフォームに numpy ライブラリをインストールする方法を説明します。

numpyライブラリをX86プラットフォームにインストールします

numpy ライブラリをインストールする前に、まず Python をインストールする必要があります。手順は、上記の最初の部分の PC バージョンのコンパイル プロセスと同じです。

  1. numpy ソース コードを解凍します: tar –xvf numpy-1.8.1.tar.gz
  2. numpy ソース パスを入力します: cd numpy-1.8.1/
  3. Python を介して numpy ライブラリをインストールし、次のコマンドを実行します。

../python3.4pc/bin/python3.4 setup.py インストール

このうち、../python3.4pc/bin/python3.4 は PC 版 Python のインストール パスです。Python 実行可能プログラムを呼び出して numpy ライブラリをインストールする必要があります。インストールが成功すると、 lib/python3.4pc/site-packages/ の下に numpy ライブラリ関連のコンテンツを生成します。

  1. numpy ライブラリのインストールが成功したことを確認します。

Python インストール ディレクトリの bin フォルダーに移動します: cd python3.4pc/bin

Python プログラムを開始します: ./python3.4

numpy ライブラリをロードします: import numpy

上図の内容が表示され、エラーが報告されなければ、numpy ライブラリが読み込まれていることがわかります。

なお、Pythonのバージョンはnumpyのバージョンに対応している必要があります。バージョンが対応していない場合、numpyライブラリは利用できません。公式サイトにnumpyライブラリの対応説明があります。例えば、 cp34で書かれているため、 Python3.4バージョンに対応できます。Python のバージョンとデバイスがインターネットに接続されている場合は、pipツールを直接使用してnumpyライブラリをインストールできます。デフォルトは、Python3.4バージョン適用できるnumpyライブラリのバージョンです。現在のPython 。

  • 開発ボードARMプラットフォームは、 Pythonおよびnumpyライブラリを直接コンパイルします。

開発ボードは、PC側と同じ方法でPythonソース コードを直接コンパイルします。クロスコンパイル ツール、コンパイル プラットフォーム、ターゲット プラットフォームなどの構成はありません。gccを使用して直接コンパイルできます。開発ボードのコンパイルは非常に遅く、約30分かかります。

Pythonソース コードをインストールします。

  1. ソース コードの圧縮パッケージを任意のパスに配置し、ソース コードを解凍します: tar -xvf Python-3.4.0.tgz
  2. ソース コード ディレクトリを入力します: cd Python-3.4.0/
  3. configureを実行してMakefileを設定します

./configure --prefix=/home/analog/python3.4

--prefix=の後にPythonがインストールされるパスが続きます

次のインターフェイスが表示され、Makefileが正常に生成されたことがわかります。

  1. ソースコードをコンパイルして、makeを実行します。

次のインターフェイスは、コンパイルが成功したことを証明するように表示されます。

  1. Python をインストールするには、make installを実行します。

numpyライブラリをインストールします

  1. numpy ソース コードを解凍します: tar –xvf numpy-1.8.1.tar.gz
  2. numpy ソース パスを入力します: cd numpy-1.8.1/
  3. Python を介して numpy ライブラリをインストールし、次のコマンドを実行します。

../python3.4/bin/python3.4 setup.py インストール

このうち、../python3.4/bin/python3.4 は Python インストールのパスです。Python 実行可能プログラムを呼び出して numpy ライブラリをインストールする必要があります。インストールが成功すると、lib/python3 にあります。 Python インストール ディレクトリの .4/site-packages/ 以下の numpy ライブラリ関連のコンテンツを生成します。

  1. numpy ライブラリのインストールが成功したことを確認します。

Python インストール ディレクトリの bin フォルダーに移動します: cd python3.4pc/bin

Python プログラムを開始します: ./python3.4

numpy ライブラリをロードします: import numpy

上図の内容が表示され、エラーが報告されなければ、numpy ライブラリが読み込まれていることがわかります。

  • デフォルトのPythonバージョンを切り替える方法
  1. 開発ボードがPythonのデフォルト バージョンを切り替える

システムの起動では、デフォルトで /usr/bin/ ディレクトリ内の Python ソフト リンクが呼び出されます。必要なのは、ソフト リンクを別のバージョンの Python 実行可能プログラムに指すことだけです。たとえば、次のようになります。

ln -s /home/analog/python3.4/bin/python3.4 ./python

これによりソフト リンクが作成されますが、作成前に既存のソフト リンクを削除する必要があり、実行可能プログラムには実行許可が与えられている必要があることに注意してください。

  1. 仮想マシンがPythonのデフォルト バージョンを切り替える

仮想マシンに anaconda がインストールされていない場合、切り替え方法は開発ボードの場合と同じですが、anaconda がインストールされている場合は、ユーザー フォルダー内の .bashrc ファイルを変更し、ファイルを開いて末尾を見つけてコメントする必要がありますパーツを取り出し、コマンド ウィンドウを開いて、source ~/.bashrc を実行し (または仮想マシンを再起動し)、anaconda の Python をオフにします。/usr/bin/ にある Python ソフト リンクを変更することでバージョンを切り替えることができます。

.a 静的ライブラリの内容を表示します。

ar -t python3.4m.a

パッケージ静的ライブラリ:

ar -cvr python3.4m.a *.o

パッケージ動的ライブラリ:

gcc -shared -o python3.4m.so python.o

gcc -shared -o libhiredis.so alloc.o net.o recruitis.o sds.o async.o read.o sockcompat.o

おすすめ

転載: blog.csdn.net/qq_38584212/article/details/132041971