我正在使用带有运行 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)