交叉編譯Python-2.7.13到ARM(aarch32)平台


作者:彭東林

郵箱:pengdonglin137@163.com

QQ:405728433

 

環境

主機: ubuntu14.04 64bit

開發板: qemu + vexpress-a9 (參考: http://www.cnblogs.com/pengdonglin137/p/6442583.html

 

工具鏈: arm-none-linux-gnueabi-gcc  (gcc version 4.8.3 20140320)

Python版本: Python-2.7.13

 

參考

http://www.41443.com/HTML/Python/20151105/414154.html

http://www.cnblogs.com/tolimit/p/4519838.html?utm_source=tuicool&utm_medium=referral

 

正文

1、下載解壓python源碼

https://www.python.org/downloads/下載最新的python2系列的軟件,這里我用的是Python-2.7.13

1 #解壓
2 tar -xf Python-2.7.13.tar.xz
3 
4 #創建python2_7_13_for_x86_64
5 mkdir python2_7_13_for_x86_64
6 
7 #創建python2_7_13_for_arm
8 mkdir python2_7_13_for_arm

2、編譯x86_64版本的python軟件

我把編譯過程寫成了腳本, 進入python2_7_13_for_x86_64/目錄,然后執行如下腳本:

  • 配置 mk1_conf.sh

1 #!/bin/bash
2 
3 ../Python-2.7.13/configure --prefix=`pwd`
  • 編譯mk2_make.sh

1 #!/bin/bash
2 
3 make -j4
  • 安裝 mk3_install.sh

1 #!/bin/bash
2 
3 make install

3、交叉編譯

交叉編譯的第一步是為python源碼打上交叉編譯用的patch:Python-2.7.13-compile.patch.tar.gz

1 cd Python-2.7.13/
2 patch -p1 < ../python2_7_13_for_arm/Python-2.7.13-xcompile.patch

我也把編譯過程放到腳本,也分為三個:

  • 配置 mk1_conf.sh

1 #!/bin/bash
2 export PATH=/home/pengdonglin/src/qemu/aarch32/arm-2014.05/bin:$PATH
3 ../Python-2.7.13/configure --prefix=`pwd` \
4     --host=arm-none-linux-gnueabi \
5     --build=x86_64-linux-gnu \
6     --enable-ipv6 \
7     --enable-shared \
8     ac_cv_file__dev_ptmx="yes" \
9     ac_cv_file__dev_ptc="no"
  • 編譯 mk2_make.sh

 1 #!/bin/bash
 2 export PATH=/home/pengdonglin/src/qemu/aarch32/arm-2014.05/bin:$PATH
 3 make HOSTPYTHON=../python2_7_13_for_x86_64/python \
 4     HOSTPGEN=../python2_7_13_for_x86_64/Parser/pgen \
 5     BLDSHARED="arm-none-linux-gnueabi-gcc -shared" \
 6     CROSS_COMPILE=arm-none-linux-gnueabi- \
 7     CROSS_COMPILE_TARGET=yes \
 8     HOSTARCH=arm-none-linux-gnueabi \
 9     BUILDARCH=x86_64-linux-gnu \
10     -j4
  • 安裝 mk3_install.sh

1 #!/bin/bash
2 export PATH=/home/pengdonglin/src/qemu/aarch32/arm-2014.05/bin:$PATH
3 make install HOSTPYTHON=../python2_7_13_for_x86_64/python \
4     BLDSHARED="arm-none-linux-gnueabi-gcc -shared" \
5     CROSS_COMPILE=arm-none-linux-gnueabi- \
6     CROSS_COMPILE_TARGET=yes \
7     prefix=`pwd`

 

4、重新制作ramdisk鏡像

參考博文:用Qemu搭建aarch32學習環境

修改mk_ramdisk.sh如下:

 1 #!/bin/bash
 2 sudo rm -rf rootfs
 3 sudo rm -rf tmpfs
 4 sudo rm -rf ramdisk*
 5 sudo mkdir rootfs
 6 sudo cp ../busybox-1.24.2/_install/*  rootfs/ -raf
 7 sudo mkdir -p rootfs/proc/
 8 sudo mkdir -p rootfs/sys/
 9 sudo mkdir -p rootfs/tmp/
10 sudo mkdir -p rootfs/root/
11 sudo mkdir -p rootfs/var/
12 sudo mkdir -p rootfs/mnt/
13 sudo cp etc rootfs/ -arf
14 sudo cp -arf ../arm-2014.05/arm-none-linux-gnueabi/libc/lib rootfs/
15 sudo rm -rf rootfs/lib/*.a
16 sudo /home/pengdonglin/src/qemu/aarch32/arm-2014.05/bin/arm-none-linux-gnueabi-strip rootfs/lib/*
17 # 拷貝python相關的文件到根文件系統中
18 sudo mkdir -p rootfs/usr
19 pushd rootfs/usr
20 sudo cp  -raf /home/pengdonglin/src/qemu/python_cross_compile/python2_7_13_for_arm/lib .
21 sudo cp  -raf /home/pengdonglin/src/qemu/python_cross_compile/python2_7_13_for_arm/include .
22 sudo cp  -raf /home/pengdonglin/src/qemu/python_cross_compile/python2_7_13_for_arm/bin .
23 sudo cp  -raf /home/pengdonglin/src/qemu/python_cross_compile/python2_7_13_for_arm/share .
24 sudo /home/pengdonglin/src/qemu/aarch32/arm-2014.05/bin/arm-none-linux-gnueabi-strip lib/python*
25 popd
26 sudo mkdir -p rootfs/dev/
27 sudo mknod rootfs/dev/tty1 c 4 1
28 sudo mknod rootfs/dev/tty2 c 4 2
29 sudo mknod rootfs/dev/tty3 c 4 3
30 sudo mknod rootfs/dev/tty4 c 4 4
31 sudo mknod rootfs/dev/console c 5 1
32 sudo mknod rootfs/dev/null c 1 3
33 sudo mkdir -p rootfs/lib/modules/4\.10\.0\+
34 sudo mkdir -p rootfs/tools
35 sudo cp ./other_tools/* rootfs/tools
36 # 將ramdisk的大小擴展為100MB
37 sudo dd if=/dev/zero of=ramdisk bs=1M count=100
38 sudo mkfs.ext4 -F ramdisk
39 sudo mkdir -p tmpfs
40 sudo mount -t ext4 ramdisk ./tmpfs/  -o loop
41 sudo cp -raf rootfs/*  tmpfs/
42 sudo umount tmpfs
43 sudo gzip --best -c ramdisk > ramdisk.gz
44 sudo mkimage -n "ramdisk" -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.img

這里需要注意:

1、將剛才交叉編譯python所得的文件拷貝到rootfs/usr下面: bin、lib、include和share

2、由於Python的lib目錄占用了很大空間,有70MB左右,所以這里我們把ramdisk的大小設置為100MB

3、此外,qemu-system-arm運行的,可以給-m設置較大的物理內存,這里我設置的是1GB

5、修改kernel配置

修改ramdisk的大小設置, 這里我設置的是100MB:

1 Device Drivers  ---> 
2 
3         [*] Block devices  --->
4 
5                 (102400) Default RAM disk size (kbytes) 

6、測試

制作好ramdisk以及編譯出新的kernel后,運行系統:

 1 sudo qemu-system-arm \
 2     -M vexpress-a9 \
 3     -m 1024M \
 4     -smp 2 \
 5     -kernel ./linux-4.10/out_aarch32/arch/arm/boot/zImage \
 6     -nographic \
 7     -append "root=/dev/ram0 rw rootfstype=ext4 console=ttyAMA0 init=/linuxrc ignore_loglevel" \
 8     -initrd ./rootfs/ramdisk.img \
 9     -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
10     -dtb ./linux-4.10/out_aarch32/arch/arm/boot/dts/vexpress-v2p-ca9.dtb
下面是啟動log:
  1 $./run.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.480fcf3ace87    no        eth0
  9                             tap0
 10 docker0        8000.02423772cc85    no        
 11 [    0.000000] Booting Linux on physical CPU 0x0
 12 [    0.000000] Linux version 4.10.0+ (pengdonglin@pengdonglin-HP) (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29) ) #10 SMP Mon Mar 20 11:31:00 CST 2017
 13 [    0.000000] CPU: ARMv7 Processor [410fc090] revision 0 (ARMv7), cr=10c5387d
 14 [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
 15 [    0.000000] OF: fdt:Machine model: V2P-CA9
 16 [    0.000000] debug: ignoring loglevel setting.
 17 [    0.000000] Memory policy: Data cache writealloc
 18 [    0.000000] On node 0 totalpages: 262144
 19 [    0.000000] free_area_init_node: node 0, pgdat c0a637c0, node_mem_map ef7fa000
 20 [    0.000000]   Normal zone: 1536 pages used for memmap
 21 [    0.000000]   Normal zone: 0 pages reserved
 22 [    0.000000]   Normal zone: 196608 pages, LIFO batch:31
 23 [    0.000000]   HighMem zone: 65536 pages, LIFO batch:15
 24 [    0.000000] percpu: Embedded 14 pages/cpu @ef7b5000 s27648 r8192 d21504 u57344
 25 [    0.000000] pcpu-alloc: s27648 r8192 d21504 u57344 alloc=14*4096
 26 [    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
 27 [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260608
 28 [    0.000000] Kernel command line: root=/dev/ram0 rw rootfstype=ext4 console=ttyAMA0 init=/linuxrc ignore_loglevel
 29 [    0.000000] log_buf_len individual max cpu contribution: 4096 bytes
 30 [    0.000000] log_buf_len total cpu_extra contributions: 12288 bytes
 31 [    0.000000] log_buf_len min size: 16384 bytes
 32 [    0.000000] log_buf_len: 32768 bytes
 33 [    0.000000] early log buf free: 14860(90%)
 34 [    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
 35 [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
 36 [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
 37 [    0.000000] Memory: 1007212K/1048576K available (6144K kernel code, 453K rwdata, 1440K rodata, 1024K init, 191K bss, 41364K reserved, 0K cma-reserved, 262144K highmem)
 38 [    0.000000] Virtual kernel memory layout:
 39 [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
 40 [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
 41 [    0.000000]     vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)
 42 [    0.000000]     lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)
 43 [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
 44 [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
 45 [    0.000000]       .text : 0xc0008000 - 0xc0700000   (7136 kB)
 46 [    0.000000]       .init : 0xc0900000 - 0xc0a00000   (1024 kB)
 47 [    0.000000]       .data : 0xc0a00000 - 0xc0a71784   ( 454 kB)
 48 [    0.000000]        .bss : 0xc0a73000 - 0xc0aa2c4c   ( 192 kB)
 49 [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
 50 [    0.000000] Hierarchical RCU implementation.
 51 [    0.000000]     Build-time adjustment of leaf fanout to 32.
 52 [    0.000000]     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
 53 [    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=4
 54 [    0.000000] NR_IRQS:16 nr_irqs:16 16
 55 [    0.000000] L2C: platform modifies aux control register: 0x02020000 -> 0x02420000
 56 [    0.000000] L2C: DT/platform modifies aux control register: 0x02020000 -> 0x02420000
 57 [    0.000000] L2C-310 enabling early BRESP for Cortex-A9
 58 [    0.000000] L2C-310 full line of zeros enabled for Cortex-A9
 59 [    0.000000] L2C-310 dynamic clock gating disabled, standby mode disabled
 60 [    0.000000] L2C-310 cache controller enabled, 8 ways, 128 kB
 61 [    0.000000] L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x46420001
 62 [    0.000000] smp_twd: clock not found -2
 63 [    0.000206] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
 64 [    0.002899] clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns
 65 [    0.003447] Failed to initialize '/smb@04000000/motherboard/iofpga@7,00000000/timer@12000': -22
 66 [    0.006792] Console: colour dummy device 80x30
 67 [    0.007168] Calibrating local timer... 94.56MHz.
 68 [    0.063191] Calibrating delay loop... 869.99 BogoMIPS (lpj=4349952)
 69 [    0.148244] pid_max: default: 32768 minimum: 301
 70 [    0.149235] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
 71 [    0.149279] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
 72 [    0.158258] CPU: Testing write buffer coherency: ok
 73 [    0.158718] ftrace: allocating 20771 entries in 61 pages
 74 [    0.580570] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
 75 [    0.584830] Setting up static identity map for 0x60100000 - 0x60100058
 76 [    0.591663] smp: Bringing up secondary CPUs ...
 77 [    0.677810] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
 78 [    1.623456] CPU2: failed to boot: -38
 79 [    2.569146] CPU3: failed to boot: -38
 80 [    2.569341] smp: Brought up 1 node, 2 CPUs
 81 [    2.569417] SMP: Total of 2 processors activated (1739.98 BogoMIPS).
 82 [    2.569500] CPU: All CPU(s) started in SVC mode.
 83 [    2.599822] devtmpfs: initialized
 84 [    2.617472] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 0
 85 [    2.631508] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
 86 [    2.632028] futex hash table entries: 1024 (order: 4, 65536 bytes)
 87 [    2.671232] NET: Registered protocol family 16
 88 [    2.675992] DMA: preallocated 256 KiB pool for atomic coherent allocations
 89 [    2.853307] cpuidle: using governor ladder
 90 [    2.853708] hw-breakpoint: debug architecture 0x4 unsupported.
 91 [    2.854172] Serial: AMBA PL011 UART driver
 92 [    2.860429] OF: amba_device_add() failed (-19) for /memory-controller@100e0000
 93 [    2.862876] OF: amba_device_add() failed (-19) for /memory-controller@100e1000
 94 [    2.863329] OF: amba_device_add() failed (-19) for /watchdog@100e5000
 95 [    2.865275] irq: type mismatch, failed to map hwirq-75 for /interrupt-controller@1e001000!
 96 [    2.877129] 10009000.uart: ttyAMA0 at MMIO 0x10009000 (irq = 38, base_baud = 0) is a PL011 rev1
 97 [    2.889012] console [ttyAMA0] enabled
 98 [    2.893012] 1000a000.uart: ttyAMA1 at MMIO 0x1000a000 (irq = 39, base_baud = 0) is a PL011 rev1
 99 [    2.895140] 1000b000.uart: ttyAMA2 at MMIO 0x1000b000 (irq = 40, base_baud = 0) is a PL011 rev1
100 [    2.896620] 1000c000.uart: ttyAMA3 at MMIO 0x1000c000 (irq = 41, base_baud = 0) is a PL011 rev1
101 [    2.897695] OF: amba_device_add() failed (-19) for /smb@04000000/motherboard/iofpga@7,00000000/wdt@0f000
102 [    2.979213] SCSI subsystem initialized
103 [    2.980067] libata version 3.00 loaded.
104 [    2.981102] usbcore: registered new interface driver usbfs
105 [    2.981415] usbcore: registered new interface driver hub
106 [    2.981690] usbcore: registered new device driver usb
107 [    2.988362] Advanced Linux Sound Architecture Driver Initialized.
108 [    3.011566] clocksource: Switched to clocksource arm,sp804
109 [    3.159190] NET: Registered protocol family 2
110 [    3.164055] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
111 [    3.164307] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
112 [    3.164553] TCP: Hash tables configured (established 8192 bind 8192)
113 [    3.166386] UDP hash table entries: 512 (order: 2, 16384 bytes)
114 [    3.166801] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
115 [    3.167985] NET: Registered protocol family 1
116 [    3.171676] RPC: Registered named UNIX socket transport module.
117 [    3.171948] RPC: Registered udp transport module.
118 [    3.172020] RPC: Registered tcp transport module.
119 [    3.172115] RPC: Registered tcp NFSv4.1 backchannel transport module.
120 [    3.177825] Trying to unpack rootfs image as initramfs...
121 [    3.184610] rootfs image is not initramfs (no cpio magic); looks like an initrd
122 [    3.416590] Freeing initrd memory: 22120K
123 [    3.420686] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 1 counters available
124 [    3.430377] workingset: timestamp_bits=30 max_order=18 bucket_order=0
125 [    3.457911] squashfs: version 4.0 (2009/01/31) Phillip Lougher
126 [    3.463134] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
127 [    3.464581] 9p: Installing v9fs 9p2000 file system support
128 [    3.470989] bounce: pool size: 64 pages
129 [    3.471215] io scheduler noop registered (default)
130 [    3.475569] clcd-pl11x 10020000.clcd: PL111 designer 41 rev2 at 0x10020000
131 [    3.483346] clcd-pl11x 10020000.clcd: /clcd@10020000 hardware, 1024x768@59 display
132 [    3.602322] Console: switching to colour frame buffer device 128x48
133 [    3.617254] clcd-pl11x 1001f000.clcd: PL111 designer 41 rev2 at 0x1001f000
134 [    3.619006] clcd-pl11x 1001f000.clcd: /smb@04000000/motherboard/iofpga@7,00000000/clcd@1f000 hardware, 640x480@59 display
135 [    3.984710] brd: module loaded
136 [    3.991353] 40000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000
137 [    3.991791] Intel/Sharp Extended Query Table at 0x0031
138 [    3.992447] Using buffer write method
139 [    3.992792] erase region 0: offset=0x0,size=0x80000,blocks=128
140 [    3.994929] 40000000.flash: Found 2 x16 devices at 0x0 in 32-bit bank. Manufacturer ID 0x000000 Chip ID 0x000000
141 [    3.995125] Intel/Sharp Extended Query Table at 0x0031
142 [    3.995600] Using buffer write method
143 [    3.995708] erase region 0: offset=0x0,size=0x80000,blocks=128
144 [    3.995876] Concatenating MTD devices:
145 [    3.995986] (0): "40000000.flash"
146 [    3.996076] (1): "40000000.flash"
147 [    3.996153] into device "40000000.flash"
148 [    4.011057] libphy: Fixed MDIO Bus: probed
149 [    4.068484] libphy: smsc911x-mdio: probed
150 [    4.071230] smsc911x 4e000000.ethernet eth0: MAC Address: 52:54:00:12:34:56
151 [    4.179313] isp1760 4f000000.usb: bus width: 32, oc: digital
152 [    4.181070] isp1760 4f000000.usb: NXP ISP1760 USB Host Controller
153 [    4.181548] isp1760 4f000000.usb: new USB bus registered, assigned bus number 1
154 [    4.182418] isp1760 4f000000.usb: Scratch test failed.
155 [    4.182705] isp1760 4f000000.usb: can't setup: -19
156 [    4.183183] isp1760 4f000000.usb: USB bus 1 deregistered
157 [    4.185634] usbcore: registered new interface driver usb-storage
158 [    4.192487] mousedev: PS/2 mouse device common for all mice
159 [    4.201100] rtc-pl031 10017000.rtc: rtc core: registered pl031 as rtc0
160 [    4.216680] mmci-pl18x 10005000.mmci: Got CD GPIO
161 [    4.216979] mmci-pl18x 10005000.mmci: Got WP GPIO
162 [    4.218707] mmci-pl18x 10005000.mmci: mmc0: PL181 manf 41 rev0 at 0x10005000 irq 34,35 (pio)
163 [    4.272360] ledtrig-cpu: registered to indicate activity on CPUs
164 [    4.279939] usbcore: registered new interface driver usbhid
165 [    4.280124] usbhid: USB HID core driver
166 [    4.321426] input: AT Raw Set 2 keyboard as /devices/platform/smb@04000000/smb@04000000:motherboard/smb@04000000:motherboard:iofpga@7,00000000/10006000.kmi/serio0/input/input0
167 [    4.326835] aaci-pl041 10004000.aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 33
168 [    4.326992] aaci-pl041 10004000.aaci: FIFO 512 entries
169 [    4.327894] oprofile: using arm/armv7-ca9
170 [    4.331342] NET: Registered protocol family 17
171 [    4.331955] 9pnet: Installing 9P2000 support
172 [    4.332582] Registering SWP/SWPB emulation handler
173 [    4.348427] rtc-pl031 10017000.rtc: setting system clock to 2017-03-20 03:31:48 UTC (1489980708)
174 [    4.349574] ALSA device list:
175 [    4.349669]   #0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 33
176 [    4.999294] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/smb@04000000/smb@04000000:motherboard/smb@04000000:motherboard:iofpga@7,00000000/10007000.kmi/serio1/input/input2
177 [    5.014045] RAMDISK: gzip image found at block 0
178 [   11.157823] EXT4-fs (ram0): mounted filesystem with ordered data mode. Opts: (null)
179 [   11.158866] VFS: Mounted root (ext4 filesystem) on device 1:0.
180 [   11.189561] Freeing unused kernel memory: 1024K
181 [   12.209586] Generic PHY 4e000000.etherne:01: attached PHY driver [Generic PHY] (mii_bus:phy_addr=4e000000.etherne:01, irq=-1)
182 [   12.236870] smsc911x 4e000000.ethernet eth0: SMSC911x/921x identified at 0xf1420000, IRQ: 31
183 Please press Enter to activate this console. 
184 [root@vexpress ]# 
185 [root@vexpress ]# [   31.810292] random: fast init done
186 [root@vexpress ]# 
187 [root@vexpress ]# 
188 [root@vexpress ]# python
189 Python 2.7.13 (default, Mar 20 2017, 11:20:45) 
190 [GCC 4.8.3 20140320 (prerelease)] on linux2
191 Type "help", "copyright", "credits" or "license" for more information.
192 >>> for i in range(100): print "hello world"
193 ... 
194 hello world
195 hello world
196 hello world
197 hello world
198 hello world
199 hello world
200 hello world
201 hello world
202 hello world
203 hello world
204 hello world
205 hello world
206 hello world
207 hello world
208 hello world
209 hello world
210 hello world
211 hello world
212 hello world
213 hello world
214 hello world
215 hello world
216 hello world
217 hello world
218 hello world
219 hello world
220 hello world
221 hello world
222 hello world
223 hello world
224 hello world
225 hello world
226 hello world
227 hello world
228 hello world
229 hello world
230 hello world
231 hello world
232 hello world
233 hello world
234 hello world
235 hello world
236 hello world
237 hello world
238 hello world
239 hello world
240 hello world
241 hello world
242 hello world
243 hello world
244 hello world
245 hello world
246 hello world
247 hello world
248 hello world
249 hello world
250 hello world
251 hello world
252 hello world
253 hello world
254 hello world
255 hello world
256 hello world
257 hello world
258 hello world
259 hello world
260 hello world
261 hello world
262 hello world
263 hello world
264 hello world
265 hello world
266 hello world
267 hello world
268 hello world
269 hello world
270 hello world
271 hello world
272 hello world
273 hello world
274 hello world
275 hello world
276 hello world
277 hello world
278 hello world
279 hello world
280 hello world
281 hello world
282 hello world
283 hello world
284 hello world
285 hello world
286 hello world
287 hello world
288 hello world
289 hello world
290 hello world
291 hello world
292 hello world
293 hello world
294 >>> [  236.572628] random: crng init done

 

完。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM