Cách biên dịch chéo Python 3.6 cho Raspberry Pi


7

Tôi đang cố gắng biên dịch chéo Python 3.6 cho Raspberry Pi của tôi dựa trên các hướng dẫn trên bài đăng này , để thực hiện cài đặt sau đó env vars để chúng tôi sử dụng chuỗi công cụ linaro:

export CC=arm-bcm2708hardfp-linux-gnueabi-gcc export LD=arm-bcm2708hardfp-linux-gnueabi-ld export CXX=arm-bcm2708hardfp-linux-gnueabi-g++ export CPP="arm-bcm2708hardfp-linux-gnueabi-g++ -E" export READELF=arm-bcm2708hardfp-linux-gnueabi-readelf export RANLIB=arm-bcm2708hardfp-linux-gnueabi-ranlib export AR=arm-bcm2708hardfp-linux-gnueabi-ar
echo ac_cv_file__dev_ptmx=no > ./config.site
echo ac_cv_file__dev_ptc=no >> ./config.site
CONFIG_SITE=config.site ./configure --prefix=/home/user/Downloads/Python-3.6.1 --enable-ipv6 --build=arm-unknown-linux-gnueabihf --host=arm-unknown-linux-gnueabihf
make -j4
make install

Tuy nhiên, tôi bị kẹt tại configurelệnh thoát ra với lỗi:

checking whether we are cross compiling... configure: error: in `/home/user/Downloads/Python-3.6.1':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

Tôi đang làm gì sai? Máy chủ của tôi là Fedora 25 x86_64 và Raspberry PI của tôi là model 3 B.


1
Có bất kỳ lý do cụ thể nào bạn cần làm điều này hơn là sử dụng python36gói đã có sẵn trong Fedora 24 và mới hơn không?
mattdm

Vâng, tôi không biết rằng có thể được thực hiện, sẽ thật tuyệt nếu bạn có thể nêu chi tiết các bước để làm điều đó trong một câu trả lời.
arielnmz

Trên Pi,sudo dnf install python36
mattdm

Tuy nhiên, đây không phải là một câu trả lời chung vì nó đơn giản hơn nhiều so với biên dịch chéo!
mattdm

1
bạn không thể chỉ sudo dnf trên raspbian, vì một người, nó dựa trên debian và sử dụng năng khiếu, bạn cho rằng tôi đang sử dụng fedora hoặc thậm chí là Pidora hoặc Fed tweet, tôi cần chạy python3.6 trên Raspbian.
arielnmz

Câu trả lời:


1

Các hướng dẫn được đăng trong wiki github này đã làm điều đó cho tôi:

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/rapsberry/depsBuild/python \
    --disable-ipv6 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no \
    ac_cv_have_long_long_format=yes --enable-shared
make HOSTPYTHON=$HOME/raspberry/depsBuild/pythonhost/python \
    BLDSHARED="arm-linux-gnueabihf-gcc -shared" CROSS-COMPILE=arm-linux-gnueabihf- \
    CROSS_COMPILE_TARGET=yes HOSTARCH=arm-linux BUILDARCH=arm-linux-gnueabihf

Như bạn có thể thấy tôi cố tình bỏ qua phần biên dịch PGen và cũng bỏ qua envvar HOSTPGEN, và quá trình biên dịch kết thúc chính xác, tất cả những gì còn lại phải làm là tạo mục tiêu altinstall bằng cách sử dụng tiền tố đích như vậy (Tôi đã thực hiện bước cuối cùng này từ hướng dẫn này để biên dịch chéo python 2):

make altinstall HOSTPYTHON=$HOME/raspberry/depsBuild/pythonhost/python \
    BLDSHARED="arm-linux-gnueabihf-gcc -shared" CROSS-COMPILE=arm-linux-gnueabihf- \
    CROSS_COMPILE_TARGET=yes HOSTARCH=arm-linux BUILDARCH=arm-linux-gnueabihf \
    prefix=$HOME/Python-3.6-rpi/_install

Và cuối cùng sao chép nội dung của _install dir vào thiết bị đích (đối với tôi, đường dẫn đích nằm dưới / usr /).


Cám ơn vì cái này. Nếu bạn chấp nhận câu trả lời của chính mình, nó sẽ giúp những người khác trong tương lai
Mawg nói rằng hãy phục hồi Monica

-1

Cho ví dụ của bạn, tôi sẽ thử từ thư mục nguồn python:

tiếng vang ac_cv_file__dev_ptmx = no> ./config.site
tiếng vang ac_cv_file__dev_ptc = no >> ./config.site
CONFIG_SITE = config.site ./configure --build = i386-linux --host = arm-bcm2708hardfp-linux-gnueabi --target = arm-bcm2708hardfp-linux-gnueabi

làm

Tôi đã không thử nhưng 1. bạn có thể giải thích tại sao thông số xây dựng nên thay đổi từ arm-unknown-linux-gnueabihfthành i386-linux? 2. Tôi nên sử dụng x86_64-linuxhoặc amd64-linuxtrong trường hợp tôi đang sử dụng máy 64 bit? 3. Sự khác biệt giữa arm-unknown-linux-gnueabihfvà là arm-bcm2708hardfp-linux-gnueabigì?
arielnmz

@arielnmz 1. - tham số xây dựng xác định nền tảng bạn đang xây dựng để bạn sẽ thiết lập nó cho phù hợp. 2. x86_64-linux cũng hoạt động với tôi 3. Đây là tiền tố của chuỗi công cụ của bạn, bạn cũng cần thiết lập nó cho phù hợp
Nelstaar

Tôi sẽ thử nó càng sớm càng tốt, ty
arielnmz 28/07/17
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.