交叉编译Python
作者:互联网
我正在使用一个运行Openembedded的ARM926EJ-S评估板,我想在其上安装python.
我使用linaro工具链(releases.linaro.org/components/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
因为它适用于另一个lib(pjsip),但不幸的是它没有用,所以我找到了这个解决方案:
--host=arm-unknown-linux-gnueabihf
这里:github.com/jedisct1/libsodium/issues/274
这是在配置期间发生错误,要求我这样做:
--desable-ipv6
然后配置进展顺利,所以make.
要做make install,因为我必须在我的主板上安装它,我做了:
make install DESTDIR=root@IP_ADRESS
这也有效,python安装在root@IP_ADRESS/usr/local/lib/python2.7中.
但我无法在我的主板上找到它,也没有启动python shell.
所以我试试这个:
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也没有安装……
你知道我的libs去了哪里吗?我怎么用它们?
谢谢 !
编辑:
找到解决方案,实际上当你这样做时:
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不是好的吗?
解决方法:
我找到了解决方案.我使用的电路板是集成OMAPL138(ARM926EJ-S DSP)的TMDSLCDK138.
对于那些尝试交叉编译Pyhton 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
通常你的shell将“转换”并且你的命令行正在执行:
[linux-devkit]:/usr/local/arago-2013.05/>
好的,在这里你已经完成了GOOD Arago工具链的安装.
现在交叉编译和安装Python:
我在这个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/
现在创建一个名为config.site的文件(因为如果不这样做,则会出现错误,要求您这样做):
touch config.site
gedit config.site
在此文件中添加以下两行:
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
现在你只需要压缩你的MY_BOARD_python文件夹,将它scp到你的主板:
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!!
跳这将有所帮助!
标签:python,cross-compilation 来源: https://codeday.me/bug/20190816/1671622.html