交叉编译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

 

posted @ 2017-03-20 14:12  摩斯电码  阅读(5649)  评论(2编辑  收藏  举报