方法跟交叉编译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)
上一篇:交叉编译Python-2.7.13到ARM(aarch32)—— 支持sqlite3
下一篇:讓TQ2440也用上設備樹(1)
推荐阅读最新更新时间:2024-11-05 16:47