QT编译环境配置,以及开发板移植的问题

2023-11-20

一、QT编译环境的设置

        编译环境的配置,这个是真个系统构建的时候配置的问题,比较麻烦,后面在补这部分的知识。

        韦东山的开发板和乌班图的编译工具链里面是具有qt的编译工具链的,自己看的是正点原子的视频,所以按照正点正点原子的编译工具进行配置的(具体的配置方法可以看正点原子的视频),设置的不同的项目的QT页面,需要使用的链接库也是不同的,所以新产生的QT项目的显示,需要添加新的库。

注意:添加库的时候,要使用“file”命令查看链接库指向的链接库,两个库都需要拷贝到板子上的“/lib”目录下面,如果只拷贝了原本的库,没有拷贝原本库指向的库,那么运行的时候,还是会报错说找不到这个链接库。

注意:拷贝的库要是显示不能识别,就说明库本身编译的平台不是ARM平台,而是X86的平台,重这时候就需要回去配置环境,从新编译,然后从新拷贝。

 注意:自己后来编译的正点原子的库和韦东山编译器里面的库是不同的版本,是不能混淆在一起使用的,混在一起就会报错存在不同版本的链接库。

 二、QT调试的技巧

        有时候QT调试的时候,报错的信息不全,很多细节的错误都不能显示出来,所以打开QT的错误提示信息是非常重要的,操作如下:

1、打开开发板的配置信息:

vi /etc/profile

2、在上面打开的环境配置文件里面添加下面的环境配置信息,打开QT的详细报错:

export QT_DEBUG_PLUGINS=1

3、然后对开发板重启

reboot

        上面的操作都完成之后,在运行QT程序的时候,就会对错误信息详细的打印出来。

三、触摸屏没有用的问题

        触摸屏没有用,但是接上鼠标之后是可以操作按钮的,这就说明QT的按键输入是没有问题的,但是触摸屏tslab没有启动,这时候就需要对开发板的环境信息进行配置。

        触摸屏没有作用的问题已经解决,最终发现是环境变量的配置的问题,有些环境变量没有进进行配置。

        在上面的问题都解决了之后,发现在lcd上可以显示QT的页面,但是tslab的触摸屏不能使用,如下面代码所示,打开环境信息配置文件,对环境信息做下面的改变。

vi /etc/profile
#qt
export QT_ROOT=/usr/lib/qt
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMTERS=/dev/input/event1
export QT_QPA_FONTDIR=/usr/share/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_FB_TSLIB=1
export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/platforms
export QT_QPA_EGLFS_TSLIB=1
export XDG_RUNTIME_DIR=/usr/lib/a
export RUNLEVEL=3


#tslib
export TSLIB_ROOT=/usr/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1 
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_PRELOAD=/usr/lib/libts.so

下面两两行增加的作用:
        QT_QPA_GENERIC_PLUGINS=evdev:/dev/input/event1
        QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event1
添加了这么两条就能成功,是因为不添加这两行就使用了Qt默认基于libinput插件(这时候会发现鼠标是可以使用的),没有使用到tslib库,添加上面两句之后,就可以使用触摸屏啦啦啦,开森。

四、虚拟机以及镜像系统的安装

(1)虚拟机VMare的安装

就是普通的软件安装,去软件管家找软件就可以。

(2)ubntu镜像系统的安装

下面是国内镜像系统的安装:

转自:ubuntu 16.04 镜像下载

转载备份一下,网友评论说浙大最快。

官方下载地址(不推荐)

Get Ubuntu | Download | Ubuntu

中科大源 

Index of /ubuntu-releases/16.04/

阿里云开源镜像站

ubuntu-releases-16.04安装包下载_开源镜像站-阿里云

兰州大学开源镜像站

Index of /ubuntu-releases/16.04/

北京理工大学开源

http://mirror.bit.edu.cn/ubuntu-releases/16.04/

浙江大学

Index of /ubuntu-releases/16.04/

不知名镜像网站

Index of /releases/xenial

各个版本下载网址:

mirrors.melbourne.co.uk

五、交叉编译工作链

(1)交叉编译工具链各种版本的安装

Linaro Releases

1.arm-none-linux-gnueabi-gcc下载
VeryArm.com is for sale | HugeDomains

        arm-none-linux-gnueabi-gcc是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。使用时,按照主机平台,可以下载以下任一版本中的一个,结果是一样的。

2.arm-none-linux-gnueabi交叉工具链与arm-linux-gcc 有区别吗?
http://bdbaishitong.blog.163.com/blog/static/201493080201332094320957/

eabi标准的要好些,可能arm-linux-gcc就是arm-none-linux-gnueabi的一个链接

终于,郁闷已久的问题攻破了,用了三种配置交叉编译的方法,最终在开发板上实现成功了,现在想一想,有的时候真的也是运气。

(2)交叉编译工具的安装

1、下载交叉编译的安装包

        例如:arm-linux-4.2.1.tar.gz

2、将文件拷贝到“/opt”和“/usr/local”文件夹下

        将复制到这两个问价夹下的问价解压。

3、对“/etc/profile”文件的环境修改

        添加export PATH = /usr/local/arm-linux-4.2.1.tar.gz/bin

4、使用source指令让环境变量起效

        source  /etc/profile

5、如果上边报错就说明缺少32位库兼容包

        sudo apt-get install lib32ncurses5 lib32z1

六、构建文件系统

        可以参考讯为的课程:制作一个最简单的QT界面_哔哩哔哩_bilibili

里面后见文件系统之后,按照韦东山的烧录方式,需要.img镜像文件才可以,生成镜像文件可以参考文章:(100条消息) 打包开发板根文件系统,并制作成img镜像_歌舞丶升平的博客-CSDN博客        上面这部分自己还没有完全实现,后面在搞。

构建的最小系统的文件作用:

        使用“dd”命令的就是可以生成镜像文件。

七、qmake的使用

        “qmake”对QT的项目进行编译,

使用正点的编译的时候,需要source 一下,让qmake环境起作用。

韦东山的也需要,但是还没找到文件的位置。

八、构建内核、设备树

(1) 首先去u-boot官网去下载uboot的源码,链接如下:

Index of /pub/u-boot/ (denx.de)

U-boot 官网:
https://www.denx.de/wiki/U-Boot
源码下载页面:
http://ftp.denx.de/pub/u-boot/
NXP 官方 uboot 源码 Git 地址:
https://source.codeaurora.org/external/imx/uboot-imx
本开发使用的 U-boot 位于 Git 仓库,地址为:
https://e.coding.net/weidongshan/imx-uboot2017.03.git

(2)下载好时候,解压之后,就可以执行下面的命令进行解压:

进入解压好的目录下执行:
make distclean
make mx6ull_14x14_evk_defconfig
make

之后就可以得到:

然后就可以将上面的img镜像文件烧到板子上,但是不能直接使用,需要修改,这部分还不会。 

九、QT的移植

        这部分参考讯为的视频:QT系统移植之在开发板上部署QT运行环境_哔哩哔哩_bilibili

QT的移植包括两部分:QT源码的编译tslib源码的编译

之前的准备环节 :乌班图的安装编译器的安装(这两个前面去已经阐述过)

(1)tslib的下载和编译

        正点的git的地址: https://github.com/kergoth/tslib

         下载好之后,将文件解压到一个文件夹之后,使用万能命令获得Makefile文件。使用万能命令之前可能需要安装下面的软件, 防止编译 tslib 过程中出错
 
sudo apt-get update
sudo apt-get install autoconf automake libtool

对环境变量进行配置(如果已经修改了环境文件,就不需要在进行配置)

平台
export ARCH=arm
交叉编译命令,可以根据自己的进行配置
export CROSS_COMPILE=arm-linux-gnueabihf-
交叉编译命令安装的位置,精确的指令的bin目录下
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/gcc-linaro-6.2.1-2016.11-x
86_64_arm-linux-gnueabihf/bin
首先创建一个 tslib 文件夹,用于存放编译结果,比如文件路径为:
/home/topeet/driver/imx6ull/43touchscreen/tslib
拷贝 tslib 源码压缩包到 /home/topeet/driver/imx6ull/43touchscreen/ 目录下并解压,如下图所示:
cd tslib-1.21/ //进入 tslib 源码目录
如果没有这个目录就创建一个:/opt/tslib.1.4
./configure --host=arm-linux-gnueabihf --prefix=/opt/tslib.1.4
make
如果没有tmp,就自己创建一个
make install DESTDIR=$PWD/tmp
注意, 在使用 ./configure 配置 tslib 的时候
“--host” 参数指定编译器,指定的编译器要和编译文件统使用同一个编译器,否则在开发板下不能正常使用。
“--prefix” 参数指定编译完成以后的 tslib 文件安装 到哪里,这里肯定是安装到我们刚刚创建的“tslib” 目录下。
修改安装路径下的ts.conf文件:

 也可以参照韦东山的修改方式。

将编译好的文件拷贝到开发板板山,将产生的lib链接库和include头文件拷贝到自己自己工具链里面。
使用下面命令查看自己交叉编译工具链的位置:
echo 'main(){}'| arm-linux-gnueabihf-gcc -E -v -
        然后将安装路径下tslib 目录下的所有文件拷贝到开发板的opt文件里面。如果直接拷贝的话会出现符号链接文件 不能拷贝的现象, 可以先使用 tar 命令进行打包,然后解压到根文件系统下。

(2)QT的下载与编译

QT源码的下载位置:http://download.qt.io/new_archive/qt/5.7/5.7.1/

        使 用 “ tar -vxf qt-everywhere-opensource-src-5.7.0 ” 命 令 解 压 Qt5.7 源 码 , 并 进 入 解 压 生 成 的 “qt-everywhere-opensource-src-5.7.0 ”目录。
        
        在 qt-everywhere-opensource-src-5.7.0 目录下,打开 qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf 文件,并修改为如下所示内容 ,因为一会我们要用到这个里面的内容,所以我们要先修改一下这里面的编译器。修改完成如下:
# 修改了下面中文注释的两处#
qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib

#添加了下面的几行
QT_QPA_DEFAULT_PLATFORM = linux #eglfs
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf

#根据自己的编译工具链修改下面的工具链名字
QMAKE_CC = arm-none-linux-gnueabi-gcc
QMAKE_CXX = arm-none-linux-gnueabi-g++
QMAKE_LINK = arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_NM = arm-none-linux-gnueabi-nm -P
QMAKE_STRIP = arm-none-linux-gnueabi-strip
load(qt_config)
        然后我们需要用 configure 生成下 Makefile ,因为命令比较长,我们一般都是创建一个脚本,然后执行我们这个脚本生成 Makefile 。 使用“vi autoconfigure.sh” 命令,新建 “autoconfigure.sh” 脚本。脚本内容如下所示。
#!/bin/sh
./configure \
-v \                                 #配置期间输出详细的信息
-prefix /opt/qt5.7.0                 #安装的路径
-release \                           #关闭调试版本的QT
-opensource \                        #构建QT的开源系统
-make libs \                         #make是要添加的组件
-xplatform linux-arm-gnueabi-g++ \   #上面产生的qt编译器,在这里指定
-optimized-qmake \                   #在调试版本中构建优化主机的工具
-pch \                               #使用预编译的头文件
-qt-sql-sqlite \                     #下面都是使用qt自带的库,如sql-sqlite
-qt-libjpeg \
-qt-zlib \
-no-opengl \                         #不使用qt自带的库opengl
-skip qt3d \                         #跳过qt3d
-skip qtcanvas3d \
-skip qtpurchasing \
-no-sse2 \                           #不使用这个指令
-no-openssl \
-no-nis \
-no-cups \
-no-glib \
-no-iconv \
-nomake examples \                   #不生成历程的代码
-nomake tools \                      #不生成工具
-skip qtvirtualkeyboard \            #跳过虚拟键盘
-I/opt/tslib1.4/include \            #指定tslib触摸的头文件
-L/opt/tslib1.4/lib                  #指定tslib触摸的库
exit

执行下面的指令进行安装:

./autoconfigure.sh
make
make install

(3)在开发板上部署QT和tslib的环境

        将上面tslib和qt安装路径下的文件全部拷贝到开发板的"/opt"目录下。

        修改根文件系统下的配置文件“/etc/profile”文件添加一下内容:(也可以创建两个脚本文件“.sh”,将这两个脚本文件名字添加到/etc/profile中)

EVENT=$(cat /proc/bus/input/devices | grep -E 'TSC2007|ft5x0x_ts|goodix-ts' -A4 | tail -n1 | awk '{print$NF}')


export TSLIB_ROOT=/opt/tslib1.4
export TSLIB_TSDEVICE=/dev/input/$EVENT
export TSLIB_CONFFILE=/opt/tslib1.4/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_PLUGINDIR=/opt/tslib1.4/lib/ts
export TSLIB_CONSOLEDEVICE=none
export QT_ROOT=/opt/qt5.7.0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$TSLIB_ROOT/lib/
下面是每行的解释:
自动获取触摸的设备节点,变量 EVENT 的值可能是 event0 event2....... 等。
EVENT=$(cat /proc/bus/input/devices | grep -E 'TSC2007|ft5x0x_ts|goodix-ts' -A4 | tail -n1 | awk '{print$NF}')
触摸库所在的位置
export TSLIB_ROOT=/opt/tslib1.4
触摸屏设备文件
export TSLIB_TSDEVICE=/dev/input/$EVENT
tslib 模块配置文件
export TSLIB_CONFFILE=/opt/tslib1.4/etc/ts.conf
指定触摸屏校准文件 pintercal 的存放位置
export TSLIB_CALIBFILE=/etc/pointercal
设定控制台设备为 none ,否则默认为 /dev/tty ,这样可以避免出现 “ open consoledevice: No such file
or directory KDSETMODE: Bad file descriptor ” 的错误
export TSLIB_CONSOLEDEVICE=none
qt 库所在的路径
export QT_ROOT=/opt/qt5.7.0
qt 字库的目录
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
qt 插件的目录
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
指定帧缓冲设备 /dev/fb0
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
添加 QT 和触摸库的环境变量,根据自己拷贝的文件夹进行设置。
export LD_LIBRARY_PATH= /lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$TSLIB_ROOT/lib/

        把视频所在目录下的字库文件拷贝到根文件系统的 qt 库的/lib/fonts 下,没有这个路径手动创建一个路径。(字库我这里还没有,用的时候自己找“wenquanyi.ttf”)

        然后我们回到根文件系统的 lib 目录下,将视频目录下的 libstdc.tar.gz 拷贝到 lib 解压,并输入命令:(libstdc.tar.gz 这里也没有,用的时候自己找)

ln -s libstdc++.so.6.0.19 libstdc++.so.6

到此QT的移植就结束啦啦啦啦啦啦啦啦啦,真jiba繁琐。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT编译环境配置,以及开发板移植的问题 的相关文章

  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • 带 Qt 的菜单栏/系统托盘应用程序

    我是 Qt PyQt 的新手 我正在尝试制作一个应用程序 其功能将从菜单栏 系统托盘执行 这里展示了一个完美的例子 我找不到关于如何做到这一点的好资源 有人可以建议吗 Thanks 我认为您正在寻找与QMenu and QMainWindo
  • 通过CMake实现Qt项目

    我正在尝试通过 Cmake 构建并运行非常简单且基本的 Qt 示例 删除 pro 文件 以下是Qt项目的代码 自动生成的Qt项目的目录结构为 Cmake my project name headers mainwindow h source
  • 如何在Qt无框窗口中实现QSizeGrip?

    如何使用 Qt 无框窗口实现 QSizeGrip 代码会是什么样的 您只需在布局内窗口的一角添加 QSizeGrip 即可使其保持在该角落 QDialog dialog new QDialog 0 Qt FramelessWindowHin
  • 如何将 QByteArray 转换为十六进制字符串?

    我有打击QByteArray QByteArray ba ba 0 0x01 ba 1 0x10 ba 2 0x00 ba 3 0x07 我真的不知道如何将此 QByteArray 转换为结果字符串 其中包含 01100007 我将使用 Q
  • SWI-Prolog 与 C++ 接口的问题

    我试图让 SWI Prolog 与 C 很好地配合 现在束手无策 现在 在我开始准确解释我的问题是什么之前 我想首先说明我的项目是关于什么的以及我选择了哪些工具来开发解决方案 我的教授分配给我的任务是开发一个 GUI 程序 作为 SWI p
  • 如何从浮点数组创建新的 QImage

    我有一个代表图像的浮点数数组 列在前 我想在 QGraphicsSecene 上将图像显示为 QPixmap 为了做到这一点 我尝试使用 QImage 构造函数 QImage const uchar data int width int h
  • 使用 QTextCursor 选择一段文本

    使用 Qt 框架选择文本片段时遇到问题 例如 如果我有这个文件 没有时间休息 我想选择 ime for r 并从文档中删除这段文本 我应该如何使用 QTextCursor 来做到这一点 这是我的代码 QTextCursor cursor n
  • 无法将 QList 分配给 QString

    我遇到这个错误 Unable to assign QList
  • Qt5和QML:如何使用WebEngine Quick Nano浏览器自动输入用户名和密码

    我正在使用编写一个小应用程序Qt and QML使用 Qt 文档中的示例WebEngine Quick Nano 浏览器 https doc snapshots qt io qt5 5 9 qtwebengine webengine qui
  • 如何在 Qt Creator 中编辑 QtWebKit 的右键上下文菜单?

    好吧 这是我的困境 我正在使用 Qt Creator 制作一个使用 Webkit 的简单应用程序 我认为 Qt Creator 会有一种简单的方法来使用信号和槽编辑器编辑右键单击上下文菜单 但事实证明这不是真的 我知道 webkit 有与上
  • Qt qDebug() 在 Windows shell 中不起作用

    我正在使用一个qDebug Qt 框架的printf屏幕上有东西 当我从 Qt Creator 运行应用程序时它工作得很好 但是当我尝试从 Windows 执行它时cmd它什么也没显示 为什么会发生这种情况 你必须添加 CONFIG con
  • QStyledItemDelegate 绘制自定义小部件失败

    在我的一个项目中 我使用的是QTableWidget为了显示一些复杂的计算结果 为了提高表格的可读性 我需要在单个表格单元格内显示两个对齐的值 后来我想通过使用颜色或箭头等来进一步自定义小部件 为此我源自QStyledItemDelegat
  • Mac OS X 上的 Qt 字体系列和样式

    我有一个基于 Qt PyQt 的 GUI 应用程序 在 Mac OS X 和其他平台 上运行 它允许用户选择字体并具有粗体和斜体选项的复选框 在更新到新的基于 Cocoa 的 Qt 时 用户发现QFontComboBox不再显示不同的字体样
  • 如何在 Qt 应用程序中嵌入 Python 解释器?

    有没有一种简单的方法可以将 Python 解释器嵌入到 Qt 应用程序中 如果可能的话 我希望有一个跨平台的解决方案 这就是目的PythonQt http pythonqt sourceforge net 它支持 Windows Linux
  • Qt中Q_PROPERTY的意义是什么?

    我无法理解 Q PROPERTY 的用法 Q PROPERTY 如何帮助程序具有防御性 它是干什么用的 我看过这个论坛 但确实无法应用 我已经理解了这个例子 但不明白它的用法 这是一个例子 我能从中得到什么 我知道阅读将赋予只读特权 wri
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • 即使我在单独的线程中运行,QT GUI 也会冻结

    我有一个小型聊天应用程序 其中使用 SQLite 数据库来存储所有对话 我注意到该应用程序随机冻结 然后我必须最小化和最大化它才能使其再次工作 我认为问题可能是 SQLite 选择 插入导致 gui 冻结 我决定尝试将所有 SQLite 方
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP

随机推荐

  • Qt数据类型与强制转换(转)

    类型转换 把QString转换为 double类型 方法1 QString str 123 45 double val str toDouble val 123 45 方法2 很适合科学计数法形式转换 bool ok double d d
  • java源文件命名规则

    Java程序源文件的命名不是随意的 Java文件的命名必须满足如下规则 Java程序源文件的扩展名必须是 java 不能是其他文件扩展名 在通常情况下 Java程序源文件的主文件名可以是任意的 但有一种情况例外 如果Java程序源代码里定义
  • SpringMVC加载流程

    这节介绍SpringMVC SpringMVC是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架 本章会介绍相关概念 流程 再从源码进行讲解 1 MVC MVC Model View Controller 是一种软件设计
  • Zookeeper(三)—分布式锁实现

    一 独占锁原理 独占锁是利用zk同一目录下不能创建多个相同名称的节点这个特性 来实现分布式锁的功能 竞争锁的分布式系统 都在zk根目录下创建一个名为lock的节点 创建节点成功的系统 说明抢到了这把锁 没有创建成功的系统 说明这个节点已经被
  • 星星之火-22: 什么是手机小区重选?跳槽

    小区重选 cell reselection 指手机在空闲模式下 通过监测邻区和当前小区的信号质量以选择一个最好的小区提供服务信号的过程 选择了一家新公司 并不意味着永久待在一家公司 当前服务的公司 有可能由于经营状况变变糟 薪资水平下降 也
  • 【树莓派4B】darknet-nnpack的安装及使用

    文章目录 前言 步骤 1 下载依赖项 2 安装NNPACK darknet 3 下载darknet nnpack 4 使用YOLO进行预测 检测图像 检测视频 检测视频流 错误处理 make 时报错 undefined reference
  • (二)webpack-server

    宗旨 为了更好的开发和调试 1 package json npm init y 生成package json 2 安装server npm install webpack dev server D 3 修改配置 在package json文
  • canvas绘制一个圆分成六等分颜色随机

  • 基于FPGA的AHT10传感器温湿度读取

    文章目录 一 系统框架 二 i2c接口 三 i2c控制模块 状态机设计 状态转移图 START INIT CHECK INIT IDLE TRIGGER WAIT READ 代码 四 数据处理模块 串口 代码 五 仿真 testbench设
  • vue:实现锚点双向滚动/文章章节联动滚动效果

    文章目录 需求描述 实现思路 示例代码 参考网址 需求描述 需要实现类似doc中文档大纲的效果 点击对应章节的名称时定位到相应的正文 而当正文滚动时 高亮显示对应的章节名称 实现思路 其实笔者一开始想到的是利用a标签页内跳转 也就是 锚点
  • pandas学习笔记--增加行或列

    一 增加行 1 loc 想增加一行 行名称为 5 内容为 16 17 18 19 df loc 5 16 17 18 19 后面的序列是Iterable就行 2 at df at 5 16 17 18 19 3 set value df s
  • CTFShow web1-7——CTF秀WEB模块解题思路

    CTFShow WEB模块详细通关教程 受篇幅所限 通关教程分为上下两部分 第一部分为1 7关 第二部分为8 14关 本篇博客为1 7关的通关教程 从解题思路和原理剖析两个方面进行讲解 CTFShow web1 7关详细教程 解题思路 CT
  • 架构师必备技能之——MySQL数据库表设计

    好记忆不如烂笔头 能记下点东西 就记下点 有时间拿出来看看 也会发觉不一样的感受 目录 一 总体设计思想 二 字段相关设计原则 三 索引设计原则 四 SQL操作原则 五 其他原则 一 总体设计思想 1 不要在数据库做运算符操作 数据库服务器
  • FastJSON、Jackson、Gson性能测试

    起因是公司原先用的是阿里开源的FastJSON 大家用的也比较顺手 但是在出现了两次严重的漏洞后 公司决定放弃FastJSON 使用其他序列化 反序列化工具 考虑大家常用的无非就是FastJSON Jackson和Gson这三种 因此领导让
  • MyBatis 中如何使用多表查询

    MyBatis 中如何使用多表查询 MyBatis 是一款优秀的 ORM 框架 支持多表查询操作 在实际开发中 经常需要使用多表查询来获取业务数据 本文将介绍 MyBatis 中如何使用多表查询 包括使用嵌套查询 使用关联查询和使用动态 S
  • 六种进程间通信方式

    转载 六种进程间通信方式 LceChan的博客 CSDN博客 如何实现进程间通信
  • swiper 轮播 多行多列 横向排列

    一直没仔细研究过swiper 用到了swiper多行多列的展示效果 官网默认是纵向排列 想要做到横向排列 需添加一个一个属性 slidesPerColumnFill row slidesPerView 4 slidesPerColumn 4
  • SpringBoot 统一功能处理

    目录 一 统一用户登录权限验证 Spring 拦截器 统一访问前缀添加 二 统一异常处理 三 统一数据格式返回 String 格式的特殊处理 一 统一用户登录权限验证 在没有统一功能处理之前 对于用户登录权限验证 每个方法都需要单独写用户登
  • 编写函数void fun(int x,int *pp,int *n),它的功能是:求出x的偶数因子,并按从小到大的顺序放在pp所指的数组中,这些因子的个数通过形参n返回(假设pp指向足够大的空间)。

    编写函数void fun int x int pp int n 它的功能是 求出x的偶数因子 并按从小到大的顺序放在pp所指的数组中 这些因子的个数通过形参n返回 假设pp指向足够大的空间 如 当x的值为24 则有6个符合要求分别是2 4
  • QT编译环境配置,以及开发板移植的问题

    一 QT编译环境的设置 编译环境的配置 这个是真个系统构建的时候配置的问题 比较麻烦 后面在补这部分的知识 韦东山的开发板和乌班图的编译工具链里面是具有qt的编译工具链的 自己看的是正点原子的视频 所以按照正点正点原子的编译工具进行配置的