×
单片机 > 单片机程序设计 > 详情

交叉编译Python-2.7.13到ARM(aarch64)平台

发布时间:2020-08-27 发布时间:
|

方法跟交叉编译Python-2.7.13到ARM(aarch32)平台基本一样, 不同的地方只是把工具链换成编译aarch64的工具链,这里可以参考用qemu搭建aarch64学习环境.


创建目录:


mkdir python2_7_13_for_aarch64

下面是配置、编译和安装的脚本:


1、配置: mk1_conf.sh


 1 #!/bin/bash

 2 

 3 export PATH=/home/pengdonglin/src/qemu/aarch64/gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/bin:$PATH

 4 

 5 ../Python-2.7.13/configure --prefix=`pwd`

 6     --host=aarch64-linux-gnu

 7     --build=x86_64-linux-gnu

 8     --enable-ipv6

 9     --enable-shared

10     ac_cv_file__dev_ptmx="yes"

11     ac_cv_file__dev_ptc="no"


2、编译: mk2_make.sh


 1 #!/bin/bash

 2 

 3 export PATH=/home/pengdonglin/src/qemu/aarch64/gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/bin:$PATH

 4 

 5 make HOSTPYTHON=../python2_7_13_for_x86_64/python

 6     HOSTPGEN=../python2_7_13_for_x86_64/Parser/pgen

 7     BLDSHARED="aarch64-linux-gnu-gcc -shared"

 8     CROSS_COMPILE=aarch64-linux-gnu-

 9     CROSS_COMPILE_TARGET=yes

10     HOSTARCH=aarch64-linux-gnu

11     BUILDARCH=x86_64-linux-gnu

12     -j4


3、安装: mk3_install.sh


1 #!/bin/bash

3 export PATH=/home/pengdonglin/src/qemu/aarch64/gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/bin:$PATH

5 make install HOSTPYTHON=../python2_7_13_for_x86_64/python

6     BLDSHARED="aarch64-linux-gnu-gcc -shared"

7     CROSS_COMPILE=arm-none-linux-gnueabi-

8     CROSS_COMPILE_TARGET=yes

9     prefix=`pwd`



此外别忘了修改制作ramdisk的脚本以及修改内核配置。


运行Qemu:


 1 sudo qemu-system-aarch64

 2     -M  virt

 3     -cpu cortex-a53

 4     -smp 2

 5     -m 4096M

 6     -kernel ./linux-4.10/out_aarch64/arch/arm64/boot/Image

 7     -nographic

 8     -append "root=/dev/ram0 rw rootfstype=ext4 console=ttyAMA0 init=/linuxrc ignore_loglevel"

 9     -initrd ./rootfs/ramdisk.img

10     -net nic,vlan=0 -net tap,vlan=0,ifname=tap0

11     -fsdev local,security_model=passthrough,id=fsdev0,path=/nfsroot

12     -device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=hostshare


启动log:


  1 $./run_all.sh 

  2 sudo tunctl -u root -t tap0

  3 TUNSETIFF: Device or resource busy

  4 sudo ifconfig tap0 0.0.0.0 promisc up

  5 sudo brctl addif br0 tap0

  6 brctl show

  7 bridge name    bridge id        STP enabled    interfaces

  8 br0        8000.36de5b2e5a93    no        eth0

  9                             tap0

 10 docker0        8000.024280392ab1    no        

 11 [    0.000000] Booting Linux on physical CPU 0x0

 12 [    0.000000] Linux version 4.10.0+ (pengdonglin@pengdonglin-HP) (gcc version 4.9.1 20140529 (prerelease) (crosstool-NG linaro-1.13.1-4.9-2014.07 - Linaro GCC 4.9-2014.06) ) #6 SMP PREEMPT Mon Mar 20 13:59:55 CST 2017

 13 [    0.000000] Boot CPU: AArch64 Processor [410fd034]

 14 [    0.000000] debug: ignoring loglevel setting.

 15 [    0.000000] efi: Getting EFI parameters from FDT:

 16 [    0.000000] efi: UEFI not found.

 17 [    0.000000] cma: Reserved 16 MiB at 0x00000000ff000000

 18 [    0.000000] NUMA: No NUMA configuration found

 19 [    0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x000000013fffffff]

 20 [    0.000000] NUMA: Adding memblock [0x40000000 - 0x13fffffff] on node 0

 21 [    0.000000] NUMA: Initmem setup node 0 [mem 0x40000000-0x13fffffff]

 22 [    0.000000] NUMA: NODE_DATA [mem 0x13ffea600-0x13ffec57f]

 23 [    0.000000] Zone ranges:

 24 [    0.000000]   DMA      [mem 0x0000000040000000-0x00000000ffffffff]

 25 [    0.000000]   Normal   [mem 0x0000000100000000-0x000000013fffffff]

 26 [    0.000000] Movable zone start for each node

 27 [    0.000000] Early memory node ranges

 28 [    0.000000]   node   0: [mem 0x0000000040000000-0x000000013fffffff]

 29 [    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000013fffffff]

 30 [    0.000000] On node 0 totalpages: 1048576

 31 [    0.000000]   DMA zone: 12288 pages used for memmap

 32 [    0.000000]   DMA zone: 0 pages reserved

 33 [    0.000000]   DMA zone: 786432 pages, LIFO batch:31

 34 [    0.000000]   Normal zone: 4096 pages used for memmap

 35 [    0.000000]   Normal zone: 262144 pages, LIFO batch:31

 36 [    0.000000] psci: probing for conduit method from DT.

 37 [    0.000000] psci: PSCIv0.2 detected in firmware.

 38 [    0.000000] psci: Using standard PSCI v0.2 function IDs

 39 [    0.000000] psci: Trusted OS migration not required

 40 [    0.000000] percpu: Embedded 21 pages/cpu @ffff8000fffbd000 s48128 r8192 d29696 u86016

 41 [    0.000000] pcpu-alloc: s48128 r8192 d29696 u86016 alloc=21*4096

 42 [    0.000000] pcpu-alloc: [0] 0 [0] 1 

 43 [    0.000000] Detected VIPT I-cache on CPU0

 44 [    0.000000] CPU features: enabling workaround for ARM erratum 845719

 45 [    0.000000] Built 1 zonelists in Node order, mobility grouping on.  Total pages: 1032192

 46 [    0.000000] Policy zone: Normal

 47 [    0.000000] Kernel command line: root=/dev/ram0 rw rootfstype=ext4 console=ttyAMA0 init=/linuxrc ignore_loglevel

 48 [    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)

 49 [    0.000000] software IO TLB [mem 0xfafff000-0xfefff000] (64MB) mapped at [ffff8000bafff000-ffff8000beffefff]

 50 [    0.000000] Memory: 4008696K/4194304K available (8572K kernel code, 946K rwdata, 3864K rodata, 1024K init, 398K bss, 169224K reserved, 16384K cma-reserved)

 51 [    0.000000] Virtual kernel memory layout:

 52 [    0.000000]     modules : 0xffff000000000000 - 0xffff000008000000   (   128 MB)

 53 [    0.000000]     vmalloc : 0xffff000008000000 - 0xffff7dffbfff0000   (129022 GB)

 54 [    0.000000]       .text : 0xffff000008080000 - 0xffff0000088e0000   (  8576 KB)

 55 [    0.000000]     .rodata : 0xffff0000088e0000 - 0xffff000008cb0000   (  3904 KB)

 56 [    0.000000]       .init : 0xffff000008cb0000 - 0xffff000008db0000   (  1024 KB)

 57 [    0.000000]       .data : 0xffff000008db0000 - 0xffff000008e9ca00   (   947 KB)

 58 [    0.000000]        .bss : 0xffff000008e9ca00 - 0xffff000008f003d0   (   399 KB)

 59 [    0.000000]     fixed   : 0xffff7dfffe7fd000 - 0xffff7dfffec00000   (  4108 KB)

 60 [    0.000000]     PCI I/O : 0xffff7dfffee00000 - 0xffff7dffffe00000   (    16 MB)

 61 [    0.000000]     vmemmap : 0xffff7e0000000000 - 0xffff800000000000   (  2048 GB maximum)

 62 [    0.000000]               0xffff7e0000000000 - 0xffff7e0004000000   (    64 MB actual)

 63 [    0.000000]     memory  : 0xffff800000000000 - 0xffff800100000000   (  4096 MB)

 64 [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1

 65 [    0.000000] Preemptible hierarchical RCU implementation.

 66 [    0.000000]     Build-time adjustment of leaf fanout to 64.

 67 [    0.000000]     RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=2.

 68 [    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=2

 69 [    0.000000] NR_IRQS:64 nr_irqs:64 0

 70 [    0.000000] GICv2m: range[mem 0x08020000-0x08020fff], SPI[80:143]

 71 [    0.000000] arm_arch_timer: WARNING: Invalid trigger for IRQ3, assuming level low

 72 [    0.000000] arm_arch_timer: WARNING: Please fix your firmware

 73 [    0.000000] arm_arch_timer: Architected cp15 timer(s) running at 62.50MHz (virt).

 74 [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x1cd42e208c, max_idle_ns: 881590405314 ns

 75 [    0.000102] sched_clock: 56 bits at 62MHz, resolution 16ns, wraps every 4398046511096ns

 76 [    0.002442] Console: colour dummy device 80x25

 77 [    0.005189] Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=250000)

78 [ 0.005287] p


关键字:交叉编译  Python-2  7  13  ARM  aarch64 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何升级STM32单片机的代码