本章節介紹 Python 如何移植到 IMX6ULL 開發板上,并有幾個簡單的測試例程。本章節使用的資料已經放到了開發板網盤資料中,路徑為:11_Linux 系統開發進階\92_章節_Python 移植使用資料。 92.1 源碼包 和文檔在一起的源碼包有:“python-2.7.3 源碼和補丁.zip”---python 壓縮包和補丁文件; “install_python.tar”---編譯好的 sqlite 庫文件; “sqlite-autoconf-3240000.tar.gz”---sqlite 的源碼文件; “測試程序”---python 測試例程。 到 Python 官網下載源碼包 2.7.3,地址 ![]() ![]() 通過 ssh 將 Python-2.7.3.tar.bz2 和補丁 Python-2.7.3-xcompile.patch 拷貝到ubuntu 系統的 home/miniLinux 目錄下,使用命令 tar -vxf Python-2.7.3.tar.bz2 解壓源碼壓縮包得到目錄 Python-2.7.3。 ![]() 92.2 編譯 92.2.1 編譯 host 版解釋器 編譯 Python 的嵌入式版需要解釋器解析 setup.py 從而編譯 Python 的模塊,因此需要先編譯出 HOST 的解釋器 。 進入解壓出來的”Python-2.7.3”,目錄,執行命令“./configure”運行配置文件。 執行完后生成 Makefile 文件,如圖 92.2.1.1: ![]() 執行命令“make python Parser/pgen”,編譯 PC 版 python Parser/pgen ,成功后如圖 92.2.1.2: ![]() 執行命令“mv python hostpython”將生成的 PC 版移動至 hostpython , 執行命令“mv Parser/pgen Parser/hostpgen”將生成的 PC 版解釋器移動至 Parser/hostpgen 。 ![]() 執行命令“make distclean”清除不必要的文件。 ![]() 交叉編譯的補丁我們放到 python 目錄下,執行命令 patch -p1 ![]() 92.2.3 交叉編譯配置 在“/home/ubuntu/python/Python-2.7.3”目錄下執行以下命令進行設置 : 設置交叉編輯器 CC=arm-none-linux-gnueabi-gcc 設置 C++交叉編譯器 CXX=arm-none-linux-gnueabi-g++ 設置 AR AR=arm-none-linux-gnueabi-ar 設置 RANLIB RANLIB=arm-none-linux-gnueabi-ranlib ![]() 92.2.4 編譯和安裝測試 將壓縮包中提供的編譯好的 sqlite3 庫“install_python.tar”通過 ssh 拷貝到 /home/ubuntu/python 下然后解壓,得到“install_python”。 用戶也可以自己編譯 sqlite3 庫,本文第四小節介紹庫的編譯。 ![]() 進入 Python-2.7.3,執行命令“vim setup.py”修改 setup.py ,找到 1044 行將 paths 改為 install_python所在路徑,如圖 92.2.4.2 所示。 ![]() 定位到 1099 行,修改路徑如圖 92.2.4.3 所示。 ![]() 執行命令“./configure --host=arm-none-linux-gnueabi --prefix=/python ”生成符合交叉編譯器的 Makefile,成功后如圖 92.2.4.4。 ![]() 執行 make 命令進行編譯“make HOSTPYTHON=./hostpythonHOSTPGEN=./Parser/hostpgen BLDSHARED="arm-none-linux-gnueabi-gcc -shared" CROSS_COMPILE=arm-none-linux-gnueabi- CROSS_COMPILE_TARGET=yes ”此時會提示缺失模塊,忽略 ![]() 成功后如圖 92.2.4.6: ![]() 執行以下命令安裝到指定文件夾“make install HOSTPYTHON=./hostpython BLDSHARED="arm-none-linux-gnueabi-gcc -shared" CROSS_COMPILE=arm-nonelinux-gnueabi- CROSS_COMPILE_TARGET=yes prefix=/home/ubuntu/python/Python-2.7.3/_install”。 其中 prefix=/home/ubuntu/python/Python-2.7.3/_install 是指定的安裝目錄,用戶根據實際情況更改。 ![]() 成功后如圖 92.2.4.8: ![]() 使用命令“ls _install”查看結果: ![]() 拷貝 sqlite3 庫文件到“/Python-2.7.3/_install/lib/”下 : cp install_python/lib/libsqlite3* Python-2.7.3/_install/lib/ ![]() 將_install 目錄整個打包,拷貝到開發板上的“/data”目錄下,然后解壓,筆者使用的是NFS 掛載的根文件系統 ,用戶也可以通過 NFS 掛載目錄或 U 盤拷貝過去。 ![]() 進入_install 目錄,使用命令以下命令設置環境變量:“export export LD_LIBRARY_PATH=/data/_install/lib ![]() ![]() ![]() ![]() |