当前位置: 首页 > news >正文

嵌入式linux之QT交叉编译环境搭建(最简单实测通用版)

这里总结下用于嵌入式linux下的QT交叉编译环境搭建,留作备忘,分享给有需要的小伙伴。不管你的是什么嵌入式linux环境,实测过的通用方法总结。

环境准备

需要准备的环境要求如下:

1.虚拟机(vmvare15.5)

2.ubuntu18.04-x64的linux系统镜像

3.qt安装包(qt-5.12.9)

4.交叉编译工具链(一般厂家会提供)

vmvare15.5下载

VMWare (Virtual Machine ware)是一个虚拟机软件,它可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。

 下载地址

VMware-workstation-full-15.5.0-14665864.exe_免费高速下载|百度网盘-分享无限制

虚拟机的网络设置

 NAT 连接方式

默认情况下,虚拟机安装完成后网络连接方式如下图所示为 NAT,与宿主机共享一个 IP 地址,我们在进行依赖包的安装,代码的编译等工作时是不需要更改的。
在虚拟机中,VMware 虚拟网卡设置为 NAT 模式时,Ubuntu 环境中网络设置为动态 IP 即可。在这种模式下虚拟 NAT 设备和主机网卡相连通信上网。这种事我们虚拟机上外网最常用的方式。

桥接的连接方式
VMware 虚拟网卡设备为桥接模式时,主机网卡和虚拟机网卡通过虚拟网桥进行通信,需要在 Ubuntu环境中设置网络 IP 与主机在同一个网段,如果需要上外网需要设置 DNS 与主机网卡一致。如果在使用TFTP,SFTP 等服务器时则需要设置虚拟机的网络联系方式为桥接方式。

更新系统镜像源

ubuntu18自带的镜像源下载很慢,替换镜像源的是必要的。免不了要联网下载安装一些东西。

先备份:cp /etc/apt/sources.list   /etc/apt/sources.list.bak
再将以下源文件复制到/etc/apt/sources.list

可以使用Vi或者gedit打开。

阿里镜像源

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

华为镜像源

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://repo.huaweicloud.com/ubuntu jammy main restricted
# deb-src http://repo.huaweicloud.com/ubuntu jammy main restricted## Major bug fix updates produced after the final release of the
## distribution.
deb http://repo.huaweicloud.com/ubuntu jammy-updates main restricted
# deb-src http://repo.huaweicloud.com/ubuntu jammy-updates main restricted## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://repo.huaweicloud.com/ubuntu jammy universe
# deb-src http://repo.huaweicloud.com/ubuntu jammy universe
deb http://repo.huaweicloud.com/ubuntu jammy-updates universe
# deb-src http://repo.huaweicloud.com/ubuntu jammy-updates universe## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://repo.huaweicloud.com/ubuntu jammy multiverse
# deb-src http://repo.huaweicloud.com/ubuntu jammy multiverse
deb http://repo.huaweicloud.com/ubuntu jammy-updates multiverse
# deb-src http://repo.huaweicloud.com/ubuntu jammy-updates multiverse## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://repo.huaweicloud.com/ubuntu jammy-backports main restricted universe                                                                                                    multiverse
# deb-src http://repo.huaweicloud.com/ubuntu jammy-backports main restricted uni                                                                                                   verse multiversedeb http://repo.huaweicloud.com/ubuntu jammy-security main restricted
# deb-src http://repo.huaweicloud.com/ubuntu jammy-security main restricted
deb http://repo.huaweicloud.com/ubuntu jammy-security universe
# deb-src http://repo.huaweicloud.com/ubuntu jammy-security universe
deb http://repo.huaweicloud.com/ubuntu jammy-security multiverse
# deb-src http://repo.huaweicloud.com/ubuntu jammy-security multiverse

编译环境依赖配置

sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386 libc6:i386
// 32位兼容依赖库
//使用网络配置工具和 menuconfig 时还需要安装以下库:
linx@ubuntu:~$ sudo apt-get update //更新下载源信息
linx@ubuntu:~$ sudo apt-get install net-tools //网络配置工具sudo apt-get install lzop // 安装 lzop 工具,用于生成压缩或解压镜像
sudo apt-get install libncurses* // 安装 ncurese 相关库,U-boot 或者内核菜单显示时需要//安装一些三方开源库需要
sudo apt-get install -y autoconf automake libtool
sudo apt-get install autoconf-archive
sudo apt-get install m4sudo apt install pkg-config

QT下载

https://download.qt.io/archive/qt/

注意事项

QT的安装包可以直接从官网下载linux上的安装包,安装即可。如:https://download.qt.io/archive/qt/5.12/5.12.9/ qt-opensource-linux-x64-5.12.9.run

注意事项,因为最终目的是开发板的嵌入式环境下使用。所以上述只是安装了在linux电脑上的QT环境。最终是需要交叉编译,才可以在嵌入式linux板上运行。需要确定下你的交叉编译工具链是否包含了QT的头文件和库。一般开发板厂家都提供了现成的包含QT的交叉编译工具链,所以不需要从新编译QT的源码。打开Qtcreater,只需配置交叉编译的工具链即可。

有的文章中介绍的很麻烦,比如单独安装qtcreater之类的不需要的。直接下载的qt5.12.9中包含qt的sdk和qtcreater。

安装QT遇到的问题

Qt version is not properly installed,please run make install

1.直接copy别人安装好的QT库,在自己电脑上编译时提示Qt version is not properly installed,please run make install。

2.从网上查找发现原因:原来是qmake.exe是在Qt安装编译时生成的,里面内嵌了Qt相关的一些路径。如果直接copy过来,自己的路径结构与原来不同,则Qt库就不能正常使用。

3.解决方法:在qmake.exe所在目录新建一个文本文件,将下面的内容写入文本文件,并将文件命名为qt.conf即可。
内容修改:

[Paths]
Prefix=/usr
HostPrefix=/home/t507/tmp/OKT507/err_OKT507_buildroot/OKT507-linux-sdk/out/t507/okt507/longan/buildroot/host
Sysroot=/home/t507/tmp/OKT507/err_OKT507_buildroot/OKT507-linux-sdk/out/t507/okt507/longan/buildroot/host/aarch64-buildroot-linux-gnu/sysroot
Headers=/usr/include/qt5
Plugins=/usr/lib/qt/plugins
Examples=/usr/lib/qt/examples

error: Cannot run target compiler '/home/t507/tmp/OKT507/err_OKT507_buildroot/OKT507-linux-sdk/out/t507/okt507/longan/buildroot/host/bin/aarch64-linux-gnu-g++'. Output:

报这个错是因为从别处拷贝的别人的工具链。那么很多软链接应该是找不到的。需要运行以下脚本,删除旧的工具链的软链接,从新建立新的软链接。

changeSdkLocation.sh脚本内容如下:

#!/bin/sh
#
if [ "$#" -ne 0 ]; thenecho "Run this script to relocate the buildroot SDK at that location"exit 1
fiLOCFILE="share/buildroot/sdk-location"
FILEPATH="$(readlink -f "$0")"
NEWPATH="$(dirname "${FILEPATH}")"LICHEE_BR_OUT="/opt/okt507/buildroot"
LICHEE_OUT_DIR="/opt/okt507/buildroot"cd "${NEWPATH}"
if [ ! -r "${LOCFILE}" ]; thenecho "Previous location of the buildroot SDK not found!"exit 1
fi
OLDPATH="$(cat "${LOCFILE}")"#if [ "${NEWPATH}" = "${OLDPATH}" ]; then
#    echo "This buildroot SDK has already been relocated!"
#    exit 0
#fiFIX_LIST="
aarch64-linux-gnu-addr2line \
aarch64-linux-gnu-ar \
aarch64-linux-gnu-as \
aarch64-linux-gnu-c++ \
aarch64-linux-gnu-c++filt \
aarch64-linux-gnu-cpp \
aarch64-linux-gnu-dwp \
aarch64-linux-gnu-elfedit \
aarch64-linux-gnu-g++ \
aarch64-linux-gnu-gcc \
aarch64-linux-gnu-gcc-7.4.1 \
aarch64-linux-gnu-gcc-ar \
aarch64-linux-gnu-gcc-nm \
aarch64-linux-gnu-gcc-ranlib \
aarch64-linux-gnu-gcov \
aarch64-linux-gnu-gcov-dump \
aarch64-linux-gnu-gcov-tool \
aarch64-linux-gnu-gdb \
aarch64-linux-gnu-gdb-add-index \
aarch64-linux-gnu-gfortran \
aarch64-linux-gnu-gprof \
aarch64-linux-gnu-ld \
aarch64-linux-gnu-ld.bfd \
aarch64-linux-gnu-ld.gold \
aarch64-linux-gnu-nm \
aarch64-linux-gnu-objcopy \
aarch64-linux-gnu-objdump \
aarch64-linux-gnu-ranlib \
aarch64-linux-gnu-readelf \
aarch64-linux-gnu-size \
aarch64-linux-gnu-strings \
aarch64-linux-gnu-strip
"for str in $FIX_LIST
dorm bin/$strln -s $LICHEE_OUT_DIR/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/$str $LICHEE_BR_OUT/host/bin/$str
done[ -L $LICHEE_BR_OUT/staging ] && rm $LICHEE_BR_OUT/staging
ln -s $LICHEE_BR_OUT/host/aarch64-buildroot-linux-gnu/sysroot $LICHEE_BR_OUT/staging# Check if the path substitution does work properly, e.g.  a tree
# "/a/b/c" copied into "/a/b/c/a/b/c/" would not be allowed.
newpath="$(sed -e "s|${OLDPATH}|${NEWPATH}|g" "${LOCFILE}")"
if [ "${NEWPATH}" != "${newpath}" ]; thenecho "Something went wrong with substituting the path!"echo "Please choose another location for your SDK!"exit 1
fiecho "Relocating the buildroot SDK from ${OLDPATH} to ${NEWPATH} ..."# Make sure file uses the right language
export LC_ALL=C
# Replace the old path with the new one in all text files
grep -lr "${OLDPATH}" . | while read -r FILE ; doif file -b --mime-type "${FILE}" | grep -q '^text/' && [ "${FILE}" != "${LOCFILE}" ]thensed -i "s|${OLDPATH}|${NEWPATH}|g" "${FILE}"fi
done# At the very end, we update the location file to not break the
# SDK if this script gets interruted.
sed -i "s|${OLDPATH}|${NEWPATH}|g" ${LOCFILE}

接着又报错: 

原因是,gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu\libexec\gcc\aarch64-linux-gnu\7.4.1\liblto_plugin.so ,该软连接失效了,从新软链接下。

软链接失效的问题, 最可能是从windows下直接拷贝导致的。建议拷贝到虚拟机中,不要直接拷贝文件夹。正确做法应该是解压缩。

其他资源

ubuntu搭建qt的arm交叉编译环境_ubuntu编译qt源码_小爷帅的惊动d的博客-CSDN博客

Ubuntu20.04.1(X86_64)Qt5.14.2配置ARM64交叉编译环境_Kwok HQ的博客-CSDN博客

https://www.cnblogs.com/dancefire/archive/2011/03/09/fix-bad-superblock-in-linux.html

相关文章:

嵌入式linux之QT交叉编译环境搭建(最简单实测通用版)

这里总结下用于嵌入式linux下的QT交叉编译环境搭建,留作备忘,分享给有需要的小伙伴。不管你的是什么嵌入式linux环境,实测过的通用方法总结。 环境准备 需要准备的环境要求如下: 1.虚拟机(vmvare15.5) 2.ubuntu18.04-x64的linu…...

线性代数的学习和整理14: 线性方程组求解

目录 1 线性方程组 2 有解,无解 3 解的个数 1 线性方程组 A*xy 3根直线的交点,就是解 无解的情况 无解: 三线平行无解:三线不相交 有解 有唯一解:三线相交于一点有无数解:三条线重叠 2 齐次线性方程组…...

Web Components详解-Custom Elements

目录 引言 演变过程 概述 使用方式 创建标签 定义标签 使用标签 获取标签 异步定义标签 升级标签 完整案例 结语 相关代码 参考文章 引言 随着项目体量的增大,组件化和模块化的优势也愈发明显了,构建可重复使用、独立、可互操作的组件变得…...

批量将excel文件按照分类生成多个excel文件

要批量将Excel文件按照分类生成多个Excel文件,文件名为分类名,可以使用Python中的pandas库来实现。下面是示例代码: import pandas as pd import os def split_excel_by_category(file_path, category_column, output_folder): # 读取Ex…...

PCL 点云组件聚类

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 该算法与欧式聚类、DBSCAN聚类很是类似,聚类过程如下所述: 1. 首先,我们需要提供一个种子点集合,对种子点集合进行初始的聚类操作,聚类的评估器(即聚类条件),可以指定为法向评估,也可以是距离评估,以此我…...

学习Linux的注意事项(使用经验;目录作用;服务器注意事项)

本篇分享学习Linux过程中的一些经验 文章目录 1. Linux系统的使用经验2. Linux各目录的作用3. 服务器注意事项 1. Linux系统的使用经验 Linux严格区分大小写Linux中所有内容以文件形式保存,包括硬件,Linux是以管理文件的方式操作硬件 硬盘文件是/dev/s…...

Java字符串

文章目录 String类String的特性String对象的创建String常用方法 StringBuilder类StringBuffer类StringBuffer对象的创建StringBuffer类的常用方法 String、StringBuffer、StringBuilder区别 存放的位置 java.lang.*; 继承的父类 java.lang.Object 实现的接口 java.io.Serializa…...

vue3中props值类型和值的类型

...

windows下安装go环境 和vscode中go扩展

1. 首先安装GO Go下载地址:go.dev 选择相对应的版本,下载,运行安装程序,并打开命令提示符,运行 go env ,确认已经安装go 注意关注其中GOPATH和GOROOT,这两个地址可以在系统环境变量中进行设置…...

C++ 面试题(一)--C++基础,面向对象,内存管理

目录 1.part1 C基础 1 C特点 2 说说C语言和C的区别 3 说说 C中 struct 和 class 的区别 4 include头文件的顺序以及双引号""和尖括号<>的区别 5 说说C结构体和C结构体的区别 6 导入C函数的关键字是什么&#xff0c;C编译时和C有什么不同&#xff1f; 7…...

ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享

Algorithm 题目&#xff1a;链表中环的检测 自己的分析见博客《检测链表中是否存在环》 Review disassemble command是我读的一篇英语文章&#xff0c;这篇文章主要是介绍gdb反汇编命令的使用和参数。自己为了能够演示这篇文章里边的内容&#xff0c;特意自己使用汇编语言编…...

皕杰报表(BIOS Report)中设置序号的方法之二

在皕杰报表如何设置序号系列之一里&#xff0c;我们用ds.#0来实现了序号&#xff0c;用ds.#0得到的数据库中选取的记录的序号。有些情况下&#xff0c;记录序号在报表中不是按照顺序显示的&#xff0c;而是在报表中又通过排序或分组后的结果显示的&#xff0c;例如&#xff1a;…...

nacos总结黑马

SpringCloud实用篇02 0.学习目标 1.Nacos配置管理 Nacos除了可以做注册中心&#xff0c;同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多&#xff0c;达到数十、数百时&#xff0c;逐个修改微服务配置就会让人抓狂&#xff0c;而且很容易出错。我…...

【简单bat】写一个定时关机的批处理程序

感谢我那可爱的GPT助手对代码的优化工作。 echo off REM Author: liyang TEL 155-4089-9552echo 欢迎使用自动关机计划设置脚本&#xff01;by LiYang echo.:choose_action set /p "action_choice请选择要执行的操作&#xff08;输入1设置定时关机任务&#xff0c;输入2删…...

Oracle 19c 启动和关闭实例保存PDB状态

简介&#xff1a; 十年以上 MySQL Oracle DBA从业者&#xff0c;MySQL 5.7 OCP&#xff0c; 微信号: jinjushuke 当前有一个PDB 打开模式为READ WRITE [oracleDGMOGGM19C ~]$ sql sys192.168.3.107:1521/pdb1 as sysdba SQLcl: Release 19.1 Production on Wed Aug 23 10:19:…...

计算机毕设 基于机器学习的餐厅销量预测 -大数据 python

文章目录 0 前言餐厅销量预测模型简介2.ARIMA模型介绍2.1自回归模型AR2.2移动平均模型MA2.3自回归移动平均模型ARMA 三、模型识别四、模型检验4.1半稳性检验(1)用途(1)什么是平稳序列?(2)检验平稳性 ◆白噪声检验(纯随机性检验)(1)用途(1)什么是纯随机序列?(2)检验纯随机性 五…...

layui 多选限制选择3个

可以使用 layui 的表单组件进行多选&#xff0c;然后通过 JavaScript 代码限制用户最多只能选择 3 个选项。具体的实现步骤如下&#xff1a; 在 layui 的表单组件中&#xff0c;使用多选框进行多选。 <div class"layui-form-item"><label class"layu…...

PyQt PySide6 QMessageBox使用教程

PySide6 是一个 Python 绑定到 Qt6 库的库&#xff0c;允许你在 Python 中创建 Qt6 应用程序。QMessageBox 是一个提供模式对话框&#xff0c;用于显示消息、询问问题或获取简单的输入的类。 以下是使用 PySide6 中的 QMessageBox 的基本方式&#xff1a; 导入必要的模块: f…...

Visual Studio软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Visual Studio是微软公司开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;广泛应用于Windows平台上的应用程序和Web应用程序的开发。以下是Visual Studio软件的主要特点和功能&#xff1a; 集成开发环境&#x…...

VB电脑销售系统设计与实现

前 言 本文论述了销售管理系统的开发过程,它包括了软件的开发环境,开发工具以及相关技术、系统分析、系统设计、实现等内容。 本系统能为企业繁重的工作带来极大的方便,提高了工作效率及工作准确性,能准确无误地查找货物的综合信息,为企业减少了许多工作细节。 为了使此…...

如何访问MySQL错误日志

通常情况下&#xff0c;MySQL中出现减速、崩溃或其他意外行为的根本原因可以通过分析错误日志来确定。在Ubuntu系统中&#xff0c;MySQL的默认位置是/var/log/mysql/error.log。在许多情况下&#xff0c;使用less程序最容易读取错误日志&#xff0c;这是一个命令行实用程序&…...

redis主从复制详解

目录 前言&#xff1a; 分布式系统 主从模式 主从同步连接过程 replication id作用 offset作用 psync命令&#xff08;psync replicationId offset) 全量复制 全量复制过程 部分复制 部分复制过程 实时复制 前言&#xff1a; redis为了保证高可用&#xff0c;它支持…...

kubernetes/k8s驱逐机制总结篇

概述 k8s的驱逐机制是指在某些场景下&#xff0c;如node节点notReady、node节点压力较大等&#xff0c;将pod从某个node节点驱逐掉&#xff0c;让pod的上层控制器重新创建出新的pod来重新调度到其他node节点。这里也将kube-scheduler的抢占调度纳入到了驱逐的讨论范围内&#…...

Git gui教程---第七篇 Git gui的使用 返回上一次提交

1&#xff0e; 查看历史&#xff0c;打开gitk程序 2&#xff0e; 选中需要返回的版本&#xff0c;右键&#xff0c;然后点击Rest master branch to here 3.出现弹窗 每个选项我们都试一下&#xff0c;从Hard开始 返回的选项 HardMixedSoft Hard 会丢失所有的修改【此处的…...

Web 开发 Django 管理工具

上次为大家介绍了 Django 的模型&#xff0c;通过模型就可以操作数据库&#xff0c;从而就可以改变页面的展示内容&#xff0c;那问题来了&#xff0c;我们只能通过手动编辑模型文件来配置模型吗&#xff1f;当然不是&#xff0c;Django 为我们提供了强大的工具&#xff0c;可以…...

分类算法的评价指标

分类算法的评价指标 查准率、查全率、准确率、F1分数&#xff1a; 查准率&#xff08;Precision&#xff09;&#xff1a; 模型预测为正例的样本中实际未正的比例。它关注的点在&#xff1a;预测为正例样本的准确性。 查全率&#xff08;recall&#xff09;&#xff1a; 模型…...

智能工厂移动式作业轻薄加固三防平板数据采集终端

在这个高度自动化和数字化的环境中&#xff0c;数据采集变得尤为重要。为了满足这个需求&#xff0c;工业三防平板数据采集终端应运而生。工业三防平板数据采集终端采用了轻量级高强度镁合金材质&#xff0c;这使得它在保持轻薄的同时具有更强的坚固性。这种材质还具有耐磨防损…...

Python Flask token身份认证

首先安装依赖&#xff1a; pip install flask-jwt-extended 然后在主应用中&#xff08;项目入口文件&#xff09;加入以下代码&#xff1a; from flask import Flask from flask_jwt_extended import JWTManager #引入依赖 app Flask(__name__) app.config[JWT_SECRET_KEY…...

docker安装rabbitMQ

目录 1、拉取镜像 2、构造镜像 3、开启插件 4、开启安全组 5、访问 ui界面访问不到解决步骤 1、拉取镜像 docker pull rabbitmq 这里拉取的是最新镜像,若要指定版本可在后加上版本号即可&#xff1b;比如 docker pull rabbitmq:3.7.14 2、构造镜像 方式一&#xff1a;交…...

PDF如何转ppt?PDF转ppt的方法

PDF是一种广泛应用于文档传输和存储的格式&#xff0c;然而&#xff0c;在某些情况下&#xff0c;我们可能需要将PDF文件转换为PPT&#xff0c;以便更加灵活地编辑和展示内容。那么&#xff0c;PDF如何转ppt呢?在本文中&#xff0c;我们将介绍几种常用的方法和工具&#xff0c…...

免费注册自己的网站/培训课

1354 选数字基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KB 分值: 80 难度&#xff1a;5级算法题收藏关注当给定一个序列a[0],a[1],a[2],...,a[n-1] 和一个整数K时&#xff0c;我们想找出,有多少子序列满足这么一个条件&#xff1a;把当前子序列里面的所有元素乘…...

简历模板可编辑/苏州整站优化

2019独角兽企业重金招聘Python工程师标准>>> 计算机 》 属性 》 高级系统设置 》 指向你的安装目录 转载于:https://my.oschina.net/u/3608045/blog/1647983...

福州快速网站建设/深圳优化公司排名

方法一&#xff1a;父元素使用display:table和子元素使用display:table-cell属性来模拟表格&#xff0c;子元素设置vertical-align:middle和text-align:center即可垂直居中。 .div1{height:300px;width: 300px;background-color: cadetblue;display: table; } .span1{display: …...

安全教育平台登录入口/优化大师免费安装下载

大多数人引荐Linux&#xff0c;基本上都会说Linux让你更高效、更优异。然而工具只是工具。然而工具只是工具。然而工具只是工具。优异程序员和不优异程序员的差异首先是态度上的差异。他们有自个的理想&#xff0c;考虑许多&#xff0c;不管是项目开端之前还是在项目进行中&…...

怎么用adobe软件做网站/微信引流主动被加软件

本节书摘来自异步社区《深入解析IPv6&#xff08;第3版&#xff09;》一书中的第1章&#xff0c;第1.2节,作者&#xff1a; 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 IPv4地址空间受限的后果 由于IPv4的地址相对比较稀缺&#xff0c;人…...

百度网站名称和网址/正规引流推广公司

源&#xff1a;Basic脚本解释器移植到STM32转载于:https://www.cnblogs.com/LittleTiger/p/7639063.html...