我正在使用带有运行 Openembedded 的 ARM926EJ-S 的评估板,并且我想在其上安装 python。
我在 Fedora 25 上使用 linaro 工具链 (releases.linaro.org/components/toolchain/binaries/6.2-2016.11/) 成功交叉编译了 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。为了进行 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 也没有安装...
你知道我的库去哪儿了吗?我该如何使用它们?
谢谢 !
编辑 :
事实上,当您这样做时找到了解决方案:
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
通常你的 shell 会“转变”并且你的命令行将执行以下命令:
[linux-devkit]:/usr/local/arago-2013.05/>
好了,到这里你就完成了 GOOD Arago 工具链的安装。
现在交叉编译并安装Python:
我在这个 shell 中执行了所有其他命令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
在此文件中添加这两行:
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!!
希望这会有所帮助!
答案2
--host=arm-linux-gnueabihf
hf 这里代表硬件浮点支持 ARM926EJ-S 不支持硬件浮点操作。生成的二进制文件无法在目标板上执行。
请参阅相关问题: 如何判断Linux主板是否使用硬件FPU?