小编Tag*_*dac的帖子

交叉编译Python

我正在使用带有运行 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
Run Code Online (Sandbox Code Playgroud)

我必须做一个 config.site 因为在编译过程中它要求我精确:

ac_cv_file__dev_ptmx=no/yes
ac_cv_file__dev_ptc=no/yes
Run Code Online (Sandbox Code Playgroud)

我像这个人一样对他们俩说“不”:datko.net/2013/05/10/cross-compiling-python-3-3-1-for-beaglebone-arm-angstrom/

然后我测试添加:

--host=arm-elf-linux
Run Code Online (Sandbox Code Playgroud)

因为它适用于另一个库(pjsip),但不幸的是它不起作用,所以我找到了这个解决方案:

--host=arm-unknown-linux-gnueabihf
Run Code Online (Sandbox Code Playgroud)

这里:github.com/jedisct1/libsodium/issues/274

这是因为配置过程中出现错误,要求我这样做:

--desable-ipv6
Run Code Online (Sandbox Code Playgroud)

然后配置顺利,于是make。为了进行 make install,因为我必须将它安装在我的板上,所以我做了:

make install DESTDIR=root@IP_ADRESS
Run Code Online (Sandbox Code Playgroud)

这也有效,python安装在root@IP_ADRESS/usr/local/lib/python2.7中。

但我在我的板上找不到它,也无法启动 python shell。

所以我尝试这个:

export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib"
Run Code Online (Sandbox Code Playgroud)

就像这里回答的那样:stackoverflow.com/questions/4743233/is-usr-local-lib-searched-for-shared-libraries

这不会改变任何东西,我发现 /usr/local/lib 不存在...而且我发现我的 pjsip lib 也没有安装...

你知道我的库去哪儿了吗?我该如何使用它们?

谢谢 !

编辑 :

事实上,当您这样做时找到了解决方案:

make install DESTDIR=root@IP_ADRESS
Run Code Online (Sandbox Code Playgroud)

它不会将其安装到 root@IP_ADRESS,但它会创建一个名为“root@IP_ADRESS”的文件夹...

所以我 tar.bz2 这个文件夹中包含的所有文件,用 scp 将它们发送到我的主板上,并复制我的主板的 /usr/ 中的所有文件夹和文件。

但是当我尝试启动 python 时,它无法正常工作:

~# python
-sh: /usr/bin/python: …
Run Code Online (Sandbox Code Playgroud)

python cross-compilation

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

cross-compilation ×1

python ×1