作者:彭东林

邮箱: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.xz3
4 #创建python2_7_13_for_x86_645 mkdirpython2_7_13_for_x86_646
7 #创建python2_7_13_for_arm8 mkdir python2_7_13_for_arm

2、编译x86_64版本的python软件

我把编译过程写成了脚本, 进入python2_7_13_for_x86_64/目录,然后执行如下脚本:

  • 配置 mk1_conf.sh

1 #!/bin/bash2
3 ../Python-2.7.13/configure --prefix=`pwd`

  • 编译mk2_make.sh

1 #!/bin/bash2
3 make -j4

  • 安装 mk3_install.sh

1 #!/bin/bash2
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/bash2 export PATH=/home/pengdonglin/src/qemu/aarch32/arm-2014.05/bin:$PATH3 ../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/bash2 export PATH=/home/pengdonglin/src/qemu/aarch32/arm-2014.05/bin:$PATH3 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/bash2 export PATH=/home/pengdonglin/src/qemu/aarch32/arm-2014.05/bin:$PATH3 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/bash2 sudo rm -rf rootfs3 sudo rm -rf tmpfs4 sudo rm -rf ramdisk*
5 sudo mkdirrootfs6 sudo cp ../busybox-1.24.2/_install/*rootfs/ -raf7 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/ -arf14 sudo cp -arf ../arm-2014.05/arm-none-linux-gnueabi/libc/lib rootfs/15 sudo rm -rf rootfs/lib/*.a16 sudo /home/pengdonglin/src/qemu/aarch32/arm-2014.05/bin/arm-none-linux-gnueabi-strip rootfs/lib/*17 # 拷贝python相关的文件到根文件系统中18 sudo mkdir -p rootfs/usr19 pushd rootfs/usr20 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 popd26 sudo mkdir -p rootfs/dev/27 sudo mknod rootfs/dev/tty1 c 4 128 sudo mknod rootfs/dev/tty2 c 4 229 sudo mknod rootfs/dev/tty3 c 4 330 sudo mknod rootfs/dev/tty4 c 4 431 sudo mknod rootfs/dev/console c 5 132 sudo mknod rootfs/dev/null c 1 333 sudo mkdir -p rootfs/lib/modules/4\.10\.0\+34 sudo mkdir -p rootfs/tools35 sudo cp ./other_tools/* rootfs/tools36 # 将ramdisk的大小扩展为100MB37 sudo dd if=/dev/zero of=ramdisk bs=1M count=10038 sudo mkfs.ext4 -F ramdisk39 sudo mkdir -p tmpfs40 sudo mount -t ext4 ramdisk ./tmpfs/  -o loop41 sudo cp -raf rootfs/*  tmpfs/42 sudo umount tmpfs43 sudo gzip --best -c ramdisk > ramdisk.gz44 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 tap03 TUNSETIFF: Device or resource busy4 sudo ifconfig tap0 0.0.0.0promisc up5 sudobrctl addif br0 tap06 brctl show7 bridge name    bridge idSTP enabled    interfaces8 br0        8000.480fcf3ace87    no        eth09 tap010 docker0        8000.02423772cc85    no11 [    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=10c5387d14 [    0.000000] CPU: PIPT /VIPT nonaliasing data cache, VIPT nonaliasing instruction cache15 [    0.000000] OF: fdt:Machine model: V2P-CA916 [    0.000000] debug: ignoring loglevel setting.17 [    0.000000] Memory policy: Data cache writealloc18 [    0.000000] On node 0 totalpages: 262144
19 [    0.000000] free_area_init_node: node 0, pgdat c0a637c0, node_mem_map ef7fa00020 [    0.000000]   Normal zone: 1536 pages used formemmap21 [    0.000000]   Normal zone: 0pages reserved22 [    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 u5734425 [    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_loglevel29 [    0.000000] log_buf_len individual max cpu contribution: 4096bytes30 [    0.000000] log_buf_len total cpu_extra contributions: 12288bytes31 [    0.000000] log_buf_len min size: 16384bytes32 [    0.000000] log_buf_len: 32768bytes33 [    0.000000] early log buf free: 14860(90%)34 [    0.000000] PID hash table entries: 4096 (order: 2, 16384bytes)35 [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288bytes)36 [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144bytes)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   (   4kB)40 [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072kB)41 [    0.000000]     vmalloc : 0xf0800000 - 0xff800000   ( 240MB)42 [    0.000000]     lowmem  : 0xc0000000 - 0xf0000000   ( 768MB)43 [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2MB)44 [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14MB)45 [    0.000000]       .text : 0xc0008000 - 0xc0700000   (7136kB)46 [    0.000000]       .init : 0xc0900000 - 0xc0a00000   (1024kB)47 [    0.000000]       .data : 0xc0a00000 - 0xc0a71784   ( 454kB)48 [    0.000000]        .bss : 0xc0a73000 - 0xc0aa2c4c   ( 192kB)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-A958 [    0.000000] L2C-310 full line of zeros enabled for Cortex-A959 [    0.000000] L2C-310dynamic clock gating disabled, standby mode disabled60 [    0.000000] L2C-310 cache controller enabled, 8 ways, 128kB61 [    0.000000] L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x46420001
62 [    0.000000] smp_twd: clock not found -2
63 [    0.000206] sched_clock: 32bits at 24MHz, resolution 41ns, wraps every 89478484971ns64 [    0.002899] clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275ns65 [    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, 8192bytes)71 [    0.149279] Mountpoint-cache hash table entries: 2048 (order: 1, 8192bytes)72 [    0.158258] CPU: Testing writebuffer coherency: ok73 [    0.158718] ftrace: allocating 20771 entries in 61pages74 [    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, 2CPUs81 [    2.569417] SMP: Total of 2 processors activated (1739.98BogoMIPS).82 [    2.569500] CPU: All CPU(s) started inSVC mode.83 [    2.599822] devtmpfs: initialized84 [    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: 19112604462750000ns86 [    2.632028] futex hash table entries: 1024 (order: 4, 65536bytes)87 [    2.671232] NET: Registered protocol family 16
88 [    2.675992] DMA: preallocated 256 KiB pool foratomic coherent allocations89 [    2.853307] cpuidle: using governor ladder90 [    2.853708] hw-breakpoint: debug architecture 0x4unsupported.91 [    2.854172] Serial: AMBA PL011 UART driver92 [    2.860429] OF: amba_device_add() failed (-19) for /memory-controller@100e000093 [    2.862876] OF: amba_device_add() failed (-19) for /memory-controller@100e100094 [    2.863329] OF: amba_device_add() failed (-19) for /watchdog@100e500095 [    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 rev197 [    2.889012] console [ttyAMA0] enabled98 [    2.893012] 1000a000.uart: ttyAMA1 at MMIO 0x1000a000 (irq = 39, base_baud = 0) is a PL011 rev199 [    2.895140] 1000b000.uart: ttyAMA2 at MMIO 0x1000b000 (irq = 40, base_baud = 0) is a PL011 rev1100 [    2.896620] 1000c000.uart: ttyAMA3 at MMIO 0x1000c000 (irq = 41, base_baud = 0) is a PL011 rev1101 [    2.897695] OF: amba_device_add() failed (-19) for /smb@04000000/motherboard/iofpga@7,00000000/wdt@0f000102 [    2.979213] SCSI subsystem initialized103 [    2.980067] libata version 3.00loaded.104 [    2.981102] usbcore: registered new interface driver usbfs105 [    2.981415] usbcore: registered new interface driver hub106 [    2.981690] usbcore: registered new device driver usb107 [    2.988362] Advanced Linux Sound Architecture Driver Initialized.108 [    3.011566] clocksource: Switched to clocksource arm,sp804109 [    3.159190] NET: Registered protocol family 2
110 [    3.164055] TCP established hash table entries: 8192 (order: 3, 32768bytes)111 [    3.164307] TCP bind hash table entries: 8192 (order: 4, 65536bytes)112 [    3.164553] TCP: Hash tables configured (established 8192 bind 8192)113 [    3.166386] UDP hash table entries: 512 (order: 2, 16384bytes)114 [    3.166801] UDP-Lite hash table entries: 512 (order: 2, 16384bytes)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.1backchannel 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 initrd122 [    3.416590] Freeing initrd memory: 22120K123 [    3.420686] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 1counters available124 [    3.430377] workingset: timestamp_bits=30 max_order=18 bucket_order=0
125 [    3.457911] squashfs: version 4.0 (2009/01/31) Phillip Lougher126 [    3.463134] jffs2: version 2.2. (NAND) © 2001-2006Red Hat, Inc.127 [    3.464581] 9p: Installing v9fs 9p2000 filesystem support128 [    3.470989] bounce: pool size: 64pages129 [    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@59display132 [    3.602322] Console: switching to colour frame buffer device 128x48133 [    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@59display135 [    3.984710] brd: module loaded136 [    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 writemethod139 [    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 writemethod143 [    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: probed149 [    4.068484] libphy: smsc911x-mdio: probed150 [    4.071230] smsc911x 4e000000.ethernet eth0: MAC Address: 52:54:00:12:34:56
151 [    4.179313] isp1760 4f000000.usb: bus width: 32, oc: digital152 [    4.181070] isp1760 4f000000.usb: NXP ISP1760 USB Host Controller153 [    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 1deregistered157 [    4.185634] usbcore: registered new interface driver usb-storage158 [    4.192487] mousedev: PS/2 mouse device common forall mice159 [    4.201100] rtc-pl031 10017000.rtc: rtc core: registered pl031 as rtc0160 [    4.216680] mmci-pl18x 10005000.mmci: Got CD GPIO161 [    4.216979] mmci-pl18x 10005000.mmci: Got WP GPIO162 [    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 CPUs164 [    4.279939] usbcore: registered new interface driver usbhid165 [    4.280124] usbhid: USB HID core driver166 [    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/input0167 [    4.326835] aaci-pl041 10004000.aaci: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 33
168 [    4.326992] aaci-pl041 10004000.aaci: FIFO 512entries169 [    4.327894] oprofile: using arm/armv7-ca9170 [    4.331342] NET: Registered protocol family 17
171 [    4.331955] 9pnet: Installing 9P2000 support172 [    4.332582] Registering SWP/SWPB emulation handler173 [    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/input2177 [    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: 1024K181 [   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 ]# python189 Python 2.7.13 (default, Mar 20 2017, 11:20:45)190 [GCC 4.8.3 20140320(prerelease)] on linux2191 Type "help", "copyright", "credits" or "license" for moreinformation.192 >>> for i in range(100): print "hello world"
193 ...194 hello world195 hello world196 hello world197 hello world198 hello world199 hello world200 hello world201 hello world202 hello world203 hello world204 hello world205 hello world206 hello world207 hello world208 hello world209 hello world210 hello world211 hello world212 hello world213 hello world214 hello world215 hello world216 hello world217 hello world218 hello world219 hello world220 hello world221 hello world222 hello world223 hello world224 hello world225 hello world226 hello world227 hello world228 hello world229 hello world230 hello world231 hello world232 hello world233 hello world234 hello world235 hello world236 hello world237 hello world238 hello world239 hello world240 hello world241 hello world242 hello world243 hello world244 hello world245 hello world246 hello world247 hello world248 hello world249 hello world250 hello world251 hello world252 hello world253 hello world254 hello world255 hello world256 hello world257 hello world258 hello world259 hello world260 hello world261 hello world262 hello world263 hello world264 hello world265 hello world266 hello world267 hello world268 hello world269 hello world270 hello world271 hello world272 hello world273 hello world274 hello world275 hello world276 hello world277 hello world278 hello world279 hello world280 hello world281 hello world282 hello world283 hello world284 hello world285 hello world286 hello world287 hello world288 hello world289 hello world290 hello world291 hello world292 hello world293 hello world294 >>> [  236.572628] random: crng init done

完。

转载于:https://www.cnblogs.com/pengdonglin137/p/6588253.html

交叉编译Python-2.7.13到ARM(aarch32)平台相关推荐

  1. python 嵌入式界面_运用Python和PyQT开发嵌入式ARM的界面

    Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发 1) ...

  2. 如何交叉编译Python到ARM-Linux平台(转)

    源: 如何交叉编译Python到ARM-Linux平台

  3. python 判断是否有余数_判断多个坐标是否在同一条直线上|Python练习系列[13]

    练习内容:判断多个坐标是否在同一条直线上 判断多个坐标是否在同一条直线上|Python练习系列[13]_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com print ...

  4. Linux下安装python 2.7.13

    1.安装依赖的库 yum -y install python-devel openssl openssl-devel gcc sqlite sqlite-devel mysql-devel libxm ...

  5. ARM AArch32和AArch64通用寄存器、状态寄存器

    ARM AArch32和AArch64通用寄存器.状态寄存器 文章目录 ARM AArch32和AArch64通用寄存器.状态寄存器 1. ARM CPU Mode 1.1 ARM32 CPU Mod ...

  6. python爬取去哪里_详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?

    今年五一放了四天假,很多人不再只是选择周边游,因为时间充裕,选择了稍微远一点的景区,甚至出国游.各个景点成了人山人海,拥挤的人群,甚至去卫生间都要排队半天,那一刻我突然有点理解灭霸的行为了. 今天通过 ...

  7. python浓缩(13)面向对象编程

    为什么80%的码农都做不了架构师?>>>    本章主题 ? 引言 ? 面向对象编程 ? 类 ? 实例 ? 绑定与方法调用 ? 子类,派生和继承 ? 内建函数 ? 定制类 ? 私有性 ...

  8. python dict 合并同类项_零基础入门学习Python,这13个Python惯用小技巧一定要收藏...

    原标题:零基础入门学习Python,这13个Python惯用小技巧一定要收藏 Python的小技巧很多,入门容易精通难!在进阶的路上,有没有什么好的技巧和好的方法,就是不断总结,不断记笔记!尤其是好的 ...

  9. 计算机毕业设计Python+django大学生闲置二手交易商城平台(源码+系统+mysql数据库+Lw文档)

    项目介绍 当前在市场经济的快速发展下,我国的经济形势也在不断的发展壮大.特别是在计算机信息化的普及下,新的互联网+业态促使着零售业在不断的转型发展.随着B2C.O2O的不断发展,传统的零售实体都受到了 ...

最新文章

  1. 二、如何读入图片、显示图像?
  2. 一线程序员年薪90万,不敢结婚不敢要孩子,被父母怼:堂弟月薪4千二胎都有了,家里最挫的就是我!...
  3. 剑指offer 06.逆向打印链表
  4. 又肝了下微服务 API 网关“金刚”,也是蛮香的~
  5. 中国抛光打磨机器人行业发展方向分析与十四五战略规划研究报告2022年版
  6. Linux基础入门(一)
  7. Android SDK 更新时修改hosts文件仍然无法更新,可试试这个方法……
  8. 使用GWmodel进行GWR模型相关运算
  9. android 编程w3c,w3cschool手机版app下载-w3cschool-编程学院 安卓版v3.4.73-PC6安卓网
  10. NERO8.3.6.0(官方完整版+序列号)
  11. python 批量修改图片尺寸
  12. python身份证号处理代码_Python实现身份证号码解析
  13. 应届毕业生应该怎样写简历?
  14. Unity基础案例讲解:创建小型太空射击游戏(一)
  15. 哈工大硕士生用 Python 实现了 11 种经典数据降维算法,源代码库已开放
  16. 海康威视存储服务器915CVR设备手动配置RAID5操作手册
  17. Pisces集成logback
  18. android七牛短视频sdk源码,七牛短视频sdk,七牛android直播端必须用七牛提供的sdk吗...
  19. 吉他谱Guitar pro是什么软件及功能作用介绍
  20. java制表键_java-制表符的使用说明

热门文章

  1. Flutter 中的国际化之多语言环境
  2. vue中v-for指令的使用之Vue知识点归纳(八)
  3. 面试死在数组,数组真的那么难吗?(Js篇)
  4. ES6学习(新增字符串方法)
  5. Vue-tools.crx 及安装常见问题解决
  6. Mr.J--初识Ajax
  7. postgresql9.1_gaussdb200_解析表结构
  8. vue基础之data
  9. android获取各种系统路径的方法
  10. AS报Failed to resolve: junit:junit:4.12错误正确的解决方法