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


方法跟交叉编译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 2 
3 export PATH=/home/pengdonglin/src/qemu/aarch64/gcc-linaro-aarch64-linux-gnu-4.9-2014.07_linux/bin:$PATH 4 
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] pid_max: default: 32768 minimum: 301
 79 [    0.006012] Security Framework initialized  80 [    0.008915] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)  81 [    0.013062] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)  82 [    0.014733] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)  83 [    0.014797] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes)  84 [    0.042484] ASID allocator initialised with 65536 entries  85 [    0.065159] EFI services will not be available.  86 [    0.079440] smp: Bringing up secondary CPUs ...  87 [    0.114887] Detected VIPT I-cache on CPU1  88 [    0.116592] CPU1: Booted secondary processor [410fd034]  89 [    0.124003] smp: Brought up 1 node, 2 CPUs  90 [    0.124142] SMP: Total of 2 processors activated.  91 [    0.124377] CPU features: detected feature: 32-bit EL0 Support  92 [    0.128079] CPU: All CPU(s) started at EL1  93 [    0.129967] alternatives: patching kernel code  94 [    0.158339] devtmpfs: initialized  95 [    0.168735] DMI not present or invalid.  96 [    0.169788] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns  97 [    0.169924] futex hash table entries: 512 (order: 4, 65536 bytes)  98 [    0.172991] pinctrl core: initialized pinctrl subsystem  99 [    0.189367] NET: Registered protocol family 16
100 [    0.219905] cpuidle: using governor menu 101 [    0.221064] vdso: 2 pages (1 code @ ffff0000088e7000, 1 data @ ffff000008db5000) 102 [    0.221247] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers. 103 [    0.225392] DMA: preallocated 256 KiB pool for atomic allocations 104 [    0.226642] Serial: AMBA PL011 UART driver 105 [    0.264136] 9000000.pl011: ttyAMA0 at MMIO 0x9000000 (irq = 39, base_baud = 0) is a PL011 rev1 106 [    0.275026] console [ttyAMA0] enabled 107 [    0.279829] irq: type mismatch, failed to map hwirq-27 for /intc!
108 [    0.374165] HugeTLB registered 2 MB page size, pre-allocated 0 pages 109 [    0.388778] ACPI: Interpreter disabled. 110 [    0.392241] vgaarb: loaded 111 [    0.393255] SCSI subsystem initialized 112 [    0.396197] libata version 3.00 loaded. 113 [    0.397290] usbcore: registered new interface driver usbfs 114 [    0.397613] usbcore: registered new interface driver hub 115 [    0.399000] usbcore: registered new device driver usb 116 [    0.400821] pps_core: LinuxPPS API ver. 1 registered 117 [    0.400936] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
118 [    0.401138] PTP clock support registered 119 [    0.401718] dmi: Firmware registration failed. 120 [    0.403488] Advanced Linux Sound Architecture Driver Initialized. 121 [    0.417340] clocksource: Switched to clocksource arch_sys_counter 122 [    0.418126] VFS: Disk quotas dquot_6.6.0
123 [    0.418355] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) 124 [    0.419846] pnp: PnP ACPI: disabled 125 [    0.463782] NET: Registered protocol family 2
126 [    0.469532] TCP established hash table entries: 32768 (order: 6, 262144 bytes) 127 [    0.470282] TCP bind hash table entries: 32768 (order: 7, 524288 bytes) 128 [    0.470875] TCP: Hash tables configured (established 32768 bind 32768) 129 [    0.471545] UDP hash table entries: 2048 (order: 4, 65536 bytes) 130 [    0.471858] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) 131 [    0.473026] NET: Registered protocol family 1
132 [    0.476084] RPC: Registered named UNIX socket transport module. 133 [    0.476229] RPC: Registered udp transport module. 134 [    0.476324] RPC: Registered tcp transport module. 135 [    0.476411] RPC: Registered tcp NFSv4.1 backchannel transport module. 136 [    0.476581] PCI: CLS 0 bytes, default 128
137 [    0.479495] Trying to unpack rootfs image as initramfs... 138 [    0.484128] rootfs image is not initramfs (no cpio magic); looks like an initrd 139 [    0.578919] Freeing initrd memory: 22496K 140 [    0.580290] kvm [1]: HYP mode not available 141 [    0.590173] audit: initializing netlink subsys (disabled) 142 [    0.593443] audit: type=2000 audit(0.572:1): initialized 143 [    0.595692] workingset: timestamp_bits=42 max_order=20 bucket_order=0
144 [    0.641038] squashfs: version 4.0 (2009/01/31) Phillip Lougher 145 [    0.645703] NFS: Registering the id_resolver key type 146 [    0.646365] Key type id_resolver registered 147 [    0.646447] Key type id_legacy registered 148 [    0.646640] nfs4filelayout_init: NFSv4 File Layout Driver Registering... 149 [    0.647720] 9p: Installing v9fs 9p2000 file system support 150 [    0.657828] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247) 151 [    0.658058] io scheduler noop registered 152 [    0.658796] io scheduler cfq registered (default) 153 [    0.677416] pl061_gpio 9030000.pl061: PL061 GPIO chip @0x0000000009030000 registered 154 [    0.680850] OF: PCI: host bridge /pcie@10000000 ranges: 155 [    0.681385] OF: PCI:    IO 0x3eff0000..0x3effffff -> 0x00000000
156 [    0.681674] OF: PCI:   MEM 0x10000000..0x3efeffff -> 0x10000000
157 [    0.681806] OF: PCI:   MEM 0x8000000000..0xffffffffff -> 0x8000000000
158 [    0.683330] pci-host-generic 3f000000.pcie: ECAM at [mem 0x3f000000-0x3fffffff] for [bus 00-0f] 159 [    0.684406] pci-host-generic 3f000000.pcie: PCI host bridge to bus 0000:00
160 [    0.684729] pci_bus 0000:00: root bus resource [bus 00-0f] 161 [    0.684894] pci_bus 0000:00: root bus resource [io  0x0000-0xffff] 162 [    0.685023] pci_bus 0000:00: root bus resource [mem 0x10000000-0x3efeffff] 163 [    0.685453] pci_bus 0000:00: root bus resource [mem 0x8000000000-0xffffffffff] 164 [    0.686138] pci 0000:00:00.0: [1b36:0008] type 00 class 0x060000
165 [    0.689896] pci 0000:00:01.0: [1af4:1000] type 00 class 0x020000
166 [    0.690272] pci 0000:00:01.0: reg 0x10: [io  0x0000-0x001f] 167 [    0.690467] pci 0000:00:01.0: reg 0x14: [mem 0x00000000-0x00000fff] 168 [    0.690685] pci 0000:00:01.0: reg 0x20: [mem 0x00000000-0x00003fff 64bit pref] 169 [    0.690800] pci 0000:00:01.0: reg 0x30: [mem 0x00000000-0x0003ffff pref] 170 [    0.691547] pci 0000:00:02.0: [1af4:1009] type 00 class 0x000200
171 [    0.691687] pci 0000:00:02.0: reg 0x10: [io  0x0000-0x003f] 172 [    0.691798] pci 0000:00:02.0: reg 0x14: [mem 0x00000000-0x00000fff] 173 [    0.691931] pci 0000:00:02.0: reg 0x20: [mem 0x00000000-0x00003fff 64bit pref] 174 [    0.694663] pci 0000:00:01.0: BAR 6: assigned [mem 0x10000000-0x1003ffff pref] 175 [    0.694980] pci 0000:00:01.0: BAR 4: assigned [mem 0x8000000000-0x8000003fff 64bit pref] 176 [    0.695232] pci 0000:00:02.0: BAR 4: assigned [mem 0x8000004000-0x8000007fff 64bit pref] 177 [    0.695398] pci 0000:00:01.0: BAR 1: assigned [mem 0x10040000-0x10040fff] 178 [    0.695560] pci 0000:00:02.0: BAR 1: assigned [mem 0x10041000-0x10041fff] 179 [    0.695699] pci 0000:00:02.0: BAR 0: assigned [io  0x1000-0x103f] 180 [    0.695827] pci 0000:00:01.0: BAR 0: assigned [io  0x1040-0x105f] 181 [    0.723487] virtio-pci 0000:00:01.0: enabling device (0000 -> 0003) 182 [    0.727062] virtio-pci 0000:00:02.0: enabling device (0000 -> 0003) 183 [    0.729663] xenfs: not registering filesystem on non-xen platform 184 [    0.751880] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled 185 [    0.760418] SuperH (H)SCI(F) driver initialized 186 [    0.762917] msm_serial: driver initialized 187 [    0.766553] cacheinfo: Unable to detect cache hierarchy for CPU 0
188 [    0.811840] brd: module loaded 189 [    0.852090] loop: module loaded 190 [    0.853734] hisi_sas: driver version v1.6
191 [    0.871287] libphy: Fixed MDIO Bus: probed 192 [    0.874215] tun: Universal TUN/TAP device driver, 1.6
193 [    0.874294] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
194 [    0.889533] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k 195 [    0.889636] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. 196 [    0.889982] igb: Intel(R) Gigabit Ethernet Network Driver - version 5.4.0-k 197 [    0.890088] igb: Copyright (c) 2007-2014 Intel Corporation. 198 [    0.890498] igbvf: Intel(R) Gigabit Virtual Function Network Driver - version 2.4.0-k 199 [    0.890637] igbvf: Copyright (c) 2009 - 2012 Intel Corporation. 200 [    0.891022] sky2: driver version 1.30
201 [    0.894966] VFIO - User Level meta-driver version: 0.3
202 [    0.901735] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver 203 [    0.901887] ehci-pci: EHCI PCI platform driver 204 [    0.902339] ehci-platform: EHCI generic platform driver 205 [    0.902941] ehci-exynos: EHCI EXYNOS driver 206 [    0.903417] ehci-msm: Qualcomm On-Chip EHCI Host Controller 207 [    0.903889] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver 208 [    0.904064] ohci-pci: OHCI PCI platform driver 209 [    0.904525] ohci-platform: OHCI generic platform driver 210 [    0.905262] ohci-exynos: OHCI EXYNOS driver 211 [    0.908295] usbcore: registered new interface driver usb-storage 212 [    0.913536] mousedev: PS/2 mouse device common for all mice 213 [    0.918212] rtc-pl031 9010000.pl031: rtc core: registered pl031 as rtc0 214 [    0.920729] i2c /dev entries driver 215 [    0.935350] sdhci: Secure Digital Host Controller Interface driver 216 [    0.935469] sdhci: Copyright(c) Pierre Ossman 217 [    0.936463] Synopsys Designware Multimedia Card Interface Driver 218 [    0.938773] sdhci-pltfm: SDHCI platform and OF driver helper 219 [    0.943455] ledtrig-cpu: registered to indicate activity on CPUs 220 [    0.950714] usbcore: registered new interface driver usbhid 221 [    0.950840] usbhid: USB HID core driver 222 [    0.962833] NET: Registered protocol family 17
223 [    0.964201] 9pnet: Installing 9P2000 support 224 [    0.966240] Key type dns_resolver registered 225 [    0.968614] registered taskstats version 1
226 [    0.975184] input: gpio-keys as /devices/platform/gpio-keys/input/input0 227 [    0.978068] rtc-pl031 9010000.pl031: setting system clock to 2017-03-20 06:00:31 UTC (1489989631) 228 [    0.978949] ALSA device list: 229 [    0.979032] No soundcards found. 230 [    0.981541] uart-pl011 9000000.pl011: no DMA platform data 231 [    0.983448] RAMDISK: gzip image found at block 0
232 [    3.599083] EXT4-fs (ram0): mounted filesystem with ordered data mode. Opts: (null) 233 [    3.599404] VFS: Mounted root (ext4 filesystem) on device 1:0. 234 [    3.601412] devtmpfs: mounted 235 [    3.651244] Freeing unused kernel memory: 1024K 236 
237 Please press Enter to activate this console. 238 [root@aarch64 ]# 239 [root@aarch64 ]# 240 [root@aarch64 ]# 241 [root@aarch64 ]# python 242 Python 2.7.13 (default, Mar 20 2017, 13:55:26) 243 [GCC 4.9.1 20140529 (prerelease)] on linux2 244 Type "help", "copyright", "credits" or "license" for more information. 245 >>> for i in rang[   34.888834] random: fast init done
246 e(10): print "Hello World", i 247 ... 248 Hello World 0
249 Hello World 1
250 Hello World 2
251 Hello World 3
252 Hello World 4
253 Hello World 5
254 Hello World 6
255 Hello World 7
256 Hello World 8
257 Hello World 9

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM