【问题标题】:Cross-compiling static Python 3.5/3.6 for ARM为 ARM 交叉编译静态 Python 3.5/3.6
【发布时间】:2018-10-18 05:51:00
【问题描述】:

我目前正在使用基于 Freescale i.MX6 ARM CPU 的嵌入式系统。制造商提供了一个 Linearo 工具链,但除此之外什么都没有,所以我仅限于没有包管理器等的自定义 linux 发行版。

对于我们的应用程序,我们需要运行带有 PIP、OpenSSL 支持和 AWS 支持库的 Python 3.5/3.6。

到目前为止,我未能尝试构建具有上述要求的 Python 3.5/3.6 的静态版本。

我当前的配置和制作标志是(曾经):

./configure LDFLAGS="-static" --disable-shared --prefix=/build make LDFLAGS="-static" LINKFORSHARED=" " -j$(nproc)

非常感谢任何帮助。

编辑:

编译后:

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ AR=arm-linux-gnueabihf-ar RANLIB=arm-linux-gnueabihf-ranlib \
./configure --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf \
--build=x86_64-linux-gnu --prefix=$HOME/python \
--disable-ipv6 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no \
ac_cv_have_long_long_format=yes LDFLAGS="-static" --disable-shared
make CFLAGS="-I/$HOME/python/include/" CXXFLAGS="-I/$HOME/python/include/" LDFLAGS="-static -L/root/python/lib/" LINKFORSHARED=" " BLDSHARED="arm-linux-gnueabihf-gcc -shared" CROSS-COMPILE=arm-linux-gnueabihf- CROSS_COMPILE_TARGET=yes HOSTARCH=arm-linux BUILDARCH=arm-linux-gnueabihf -j10
make install CFLAGS="-I/$HOME/python/include/" CXXFLAGS="-I/$HOME/python/include/" LDFLAGS="-static -L/root/python/lib/" LINKFORSHARED=" " BLDSHARED="arm-linux-gnueabihf-gcc -shared" CROSS-COMPILE=arm-linux-gnueabihf- CROSS_COMPILE_TARGET=yes HOSTARCH=arm-linux BUILDARCH=arm-linux-gnueabihf -j10

`

我得到:

Python 3.6.5 (default, May  8 2018, 14:35:54) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/dev/shm/run/media/0b4c0683-7d1d-474a-b639- 
604c1d0c6156/py3/lib/python3.6/socket.py", line 49, in <module>
import _socket
ImportError: /dev/shm/run/media/0b4c0683-7d1d-474a-b639- 
604c1d0c6156/py3/lib/python3.6/lib-dynload/_socket.cpython-36m-arm- 
linux-gnueabihf.so: invalid ELF header

这仍然让我一无所知。

【问题讨论】:

  • 你是在arm系统本身上编译的吗?
  • @Skorpeo 不,我正在交叉编译,然后复制到目标平台并在那里运行。无法在平台本身上编译,因为我们的供应商只提供了一个最小的仅二进制的基于busybox的图像。

标签: python python-3.x cross-compiling embedded-linux


【解决方案1】:

我正在寻找说明并找到了这个:https://raspberrypi.stackexchange.com/questions/66528/how-to-cross-compile-python-3-6-for-the-raspberry-pi

没试过。希望它会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-07
    • 2014-01-18
    • 2019-05-21
    • 2011-07-24
    • 2014-12-05
    • 2012-08-04
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多