平头哥 TH1520 RISC-V BeagleV-Ahead使用Thead-Yocto自定义构建系统 最详细版本

news2024/12/25 0:30:26

使用Thead-Yocto自定义BeagleV-Ahead系统

Thead-Yocto简述

  • 官网:https://www.yoctoproject.org/

  • THE YOCTO PROJECT. IT’S NOT AN EMBEDDED LINUX DISTRIBUTION,IT CREATES A CUSTOM ONE FOR YOU.

  • YOCTO项目:他不是一个嵌入式Linux发行版,是一个专门创建属于你的自定义系统!

​ Yocto 项目 (YP) 是一个开源协作项目,可帮助开发人员创建基于 Linux 的定制系统,无论硬件架构如何。该项目提供了一套灵活的工具和空间,全世界的嵌入式开发人员可以共享技术、软件堆栈、配置和最佳实践,这些技术、软件堆栈、配置和最佳实践可用于为嵌入式和物联网设备或任何需要定制 Linux 操作系统的地方创建定制的 Linux 映像。

​ 下图介绍了 Yocto POKY参考示例的整个框架,其中 POKY 是一个 Yocto Project® 的参考发行版。它包含 OpenEmbedded 构建系统(BitBake 和 OpenEmbedded Core)以及一组meta,可帮助您开始构建自己的发行版。要使用 Yocto 项目工具,您可以下载 Poky 并使用它来引导您自己的发行版。请注意,Poky 不包含二进制文件 - 它是如何从源代码构建您自己的自定义 Linux 发行版的工作示例。

img

下图是Yocto-Project项目的一个完整的 构建嵌入式工作流,以右上角 颜色说明块 来阅读此图,分别从各种 Metadata 元数据(系统源码配置 软件包配置 板级包支持等) 以及上面黄色区域 是专门的 针对于 各个构建工程部分所需的源码获取,包含了 各种下载协议 以及方式,把下载下来所需的源码 保存起来, 之后通过 淡蓝色 Build System 来分别处理不同的源码和 元层 软件包 进行构建,最后输出 镜像 以及 多种格式软件包,和SDK 系统镜像等。为了方便理解,我这里专门使用红字 和红色箭头 做了简单的说明,因为整个yocto项目非常复杂,所以无法只通过一张图就能让大家完整理解。

image-20230721115850443

如果您对yocto很感兴趣,想深入学习使用可以直接访问 官方提供的 使用教程 https://docs.yoctoproject.org/ ,在这个页面内,官方针对于 整个yocto做了非常详细的图文教程,可以参考下图 Manuals 手册下不同章节后面红字 描述来选择合适的篇幅进行阅读学习。

image-20230721142305045

老版本的文档中心: https://docs.yoctoproject.org/1.8/ref-manual/ref-manual.html

配置开发环境

主机硬件配置

建议:

  • i7-7800K 以上架构,最少 8 核 16线程

  • 32GB DDR4 内存,主频 3200MHz以上(必选,不然会 llvm native 错误)

  • 存储 500G 建议固态/M2

ubuntu18 依赖安装

在使用ubuntu18安装如下依赖包之前,请确保你的Ubuntu18系统可以联网,且使用 sudo apt update 命令更新过软件源。之后在ubuntu18终端上执行如下命令即可自动安装,安装过程持续 5 -10分钟,主要根据自己的网络 性能而定。

sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev python3-subunit mesa-common-dev zstd liblz4-tool file locales sed make binutils    g++ bash patch gzip bzip2 perl  tar    file  bc  python  cvs  mercurial rsync  subversion android-tools-mkbootimg vim  libssl-dev  android-tools-fastboot libncurses5-dev   u-boot-tools android-sdk-platform-tools  open-vm-tools-desktop python3-distutils  repo bison flex  -y

image-20230721144338407

执行如下命令配置 当前终端的编码格式为 en_US.UTF-8 。

sudo locale-gen en_US.UTF-8

image-20230721144234169

配置完成后上述两个步骤,就可以开始下面的 编译工作了。

配置编译环境

上一节我们配置好了开发所需的ubuntu-18 主机环境,这一节 我们开始获取 BealgeV-Ahead Yocto源码,并进行配置,编译输出对应的 自定义系统,此章节操作起来有一定难度,建议有编译经验的同学参考。

  1. 因为构建时会从网络下载开源软件包,下载的时间依不同的网络和网速而不同切差异很大;有些开源软件位于 GitHub 仓库,受限于国内网络环境会下载失败。为了加速这一过程,可以直接获取我们这里提前准备好的所有软件包,拷贝到 ubuntu-18.04家 ~ 目录下,所有文件存放在 百度网盘 链接:https://pan.baidu.com/s/1GVpQoNwSpBkjaMZO2gZRrQ?pwd=rqm4 文件比较大,文件名称为 yocto-downloads_light-beagle_thead-image-linux.tar.gz
    拷贝到虚拟机 ~ 家目录后,使用如下命令进行解压缩,解压缩完成是一个名为 yocto-downloads 的文件夹 。
cd ~
tar -xvf  yocto-downloads_light-beagle_thead-image-linux.tar.gz
  1. 下载 BeagleV-Ahead Thead-Yocto meta元层数据 ,在ubuntu18.04 终端下执行如下命令,在 ~家目录下指定:
cd ~
git clone https://gitee.com/thead-yocto/xuantie-yocto.git -b Linux_SDK_V1.1.2
  1. 加载目标设备的配置文件,加载环境变量,如下所示进入到 上述步骤已经下载好的镜像里面,执行yocto系统编译前的环境配置操作。
cd xuantie-yocto
source openembedded-core/oe-init-build-env thead-build/light-fm

image-20230721160309007

同时 我们需要将提前解压好的软件包 软链接到 刚才配置完 编译环境的 thead-build/light-fm/downloads目录,这样可以避免 重复下载软件包的问题

ln -s ~/yocto-downloads ../downloads

image-20230721160651760

  • 参考页面 https://gitee.com/thead-yocto/documents

编译系统镜像

配置镜像

image-20230721162202265

开始编译

​ 配置好前面的步骤以后,就可以选择 我们需要编译的BeagleV-Ahead 开发板 配置项以及选择配套的 系统镜像了,我这里使用 MACHINE=light-beagle bitbake thead-image-linux 也就是表示 编译后的主板是 BeagleV-Ahead编译出来的系统是 thead-image-linux 如下,在刚才配置好 编译环境变量的下面 执行 MACHINE=light-beagle bitbake thead-image-linux 即可开始编译。

image-20230721162445535

​ 整个编译时间大概在 5 小时以上,具体要根据性能配置而定,我这里使用i7-13700K 16核心,32GB DDR5 ,M2固态 编译了大概10个小时,大家可以作为参考。编译过程中 很有可能会出现各种奇怪的错误,请不要着急,一般情况下是因为 配置不够,或者网络原因导致的,如果无法找到原因 可以在 https://forums.100ask.net/c/elinuxdev/yocto/76 页面提交您的问题!

​ 编译完成后 系统会弹出 一段类似 下图 蓝框所示的 信息,其中 最后会有 一个 succeeded 表示编译成功,这就表明已经完成,之后我们就可以去 tmp-glibc/deploy/images/light-beagle 查看编译输出的镜像文件了。

image-20230721151257810

编译完成后的镜像输出在 ~/xuantie-yocto/thead-build/light-fm/tmp-glibc/deploy/images/light-beagle

image-20230721141003369

烧写更新镜像

​ 编译成功后输出在 tmp-glibc/deploy/images/light-beagle的镜像可以直接通过 上一篇 系统评测文章介绍的,使用 fastboot来进行烧写更新,在这里,有些文件名称可能不太一样,所以我们要根据我们编译生成的镜像,来依次执行烧录命令。

如果你不想编译,只想体验一下yocto镜像的烧录过程,可以用我提前准备好的deploy压缩包 链接:https://pan.baidu.com/s/1OD3ApN5JtOX8EQDz7JW1hg?pwd=2t4c 上传到 ubuntu 虚拟机,使用 tar -xvf deploy-light-beagle_thead-image-linux.tar.gz 命令就可以解压缩 ,里面存放了 编译来的所有资源,包含镜像 SDK deb 等

烧录前准备

  1. 参考上一篇 将 BeagleV-Ahead进入烧录模式,连接 MicroUSB 3.0线至ubuntu系统。

Flash-eMMC

  1. 在Ubuntu下提前安装好烧录工具,如果参考上一篇安装过,可以执行fastboot --version命令来验证是否安装成功。

image-20230720162255544

开始烧录

  1. 进入到编译好的镜像文件夹,在 xuantie-yocto/ 目录下的 thead-build/light-fm/tmp-glibc/deploy/images/light-beagle/ 目录,之后依次执行如下命令进行烧录操作。
sudo fastboot  flash ram  u-boot-with-spl-light-beagle-2020.10-r0.bin
sudo fastboot reboot
sudo fastboot flash uboot u-boot-with-spl-light-beagle-2020.10-r0.bin 
sudo fastboot flash boot boot.ext4 
sudo fastboot flash root thead-image-linux-light-beagle-最新日期.rootfs.ext4

如下图所示,详细描述了整个编译步骤,需要留意 最后烧写的 rootfs.ext4 文件,名称会随着编译的时间而变化。

image-20230721164759262

烧录 完成后 系统会提示 finiashed 此时需要手动按下BeagleV-Ahead RESET 按钮,系统就会自动启动,使用串口登录,输入 用户名 root 就可以进入系统。

image-20230721164915443

启动BeagleV-Ahead

​ 因为 thead-image-linux 没有桌面环境,所以只能通过串口方式启动 进入系统,如下所示,输入用户名 root 即可进入 您最新烧写好的 yocto系统。

image-20230721170035371

生成SDK

编译生成

​ 如果您只是体验一下 yocto编译系统的过程,制作出来一个自己的系统,不需要给 专门搞应用开发的同事使用,或者您不需要后续开发应用,那么就不需要做这部分,相反,如果您需要后续在前面系统上 开发属于自己的 应用程序/产品,那么就需要构建出来一个 专门且配套的 SDK(交叉工具链 + 组件应用库和头文件) ,这样才可以使用配套的工具链来进行编译系统。

生成配套的SDK命令很简单,只需要在原来的 编译镜像命令 后 加上 -c populate_sdk 参数即可。如下所示,我需要给我最新编译出来的 beagleV-Ahead 单板 thead-image-linux 系统镜像 生成配套的SDK,那么只需要执行 MACHINE=light-beagle bitbake thead-image-linux -c populate_sdk 命令即可。

image-20230721141518200

整个编译过程比较快,正常30分钟以内,因为只是做一些打包处理工作,但是在编译时 可能会出现一些报错等问题,需要解决。

解决编译错误

​ 初次编译 生成配套的SDK会提示 packagegroup-cross-canadian-light-beagle : Depends: gdb-cross-canadian-riscv64 but it is not installable 错误,错误提示信息如下图所示,我们需要在 xuantie-yocto 目录对 openembedded-core/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb 进行修改。

image-20230721140834670

​ 修改方式如下,首先 回退到 上上级 xuantie-yocto 目录,之后使用 vim/nano/gedit 等文本编辑器 修改 openembedded-core/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb 文件。

image-20230721144457090

​ 删除掉 ${@all_multilib_tune_values(d, 'GDB')} \这句代码,如下红框所示,删除完成后,保存退出此界面,继续返回到编译界面,执行编译 SDK命令。

image-20230721144742304

​ 如下图所示,编辑完成后,继续执行 MACHINE=light-beagle bitbake thead-image-linux -c populate_sdk 编译生成SDK,等待编译完成。

image-20230721144935633

​ 编译完成后,系统会提示如下打印信息,其中主要 参考 蓝色长条框内, 红色框 succeeded 字符,既表示已经完成。

image-20230721151257810

SDK输出

​ 编译完成以后,生成的 sdk 在 xuantie-yocto/ 目录下的 thead-build/light-fm/tmp-glibc/deploy/sdk/ 目录,里面 oecore-x86_64-riscv64-toolchain-nodistro.0.sh是我们需要的SDK,后面只需要在 ubuntu等Linux发行版系统下执行 ./oecore-x86_64-riscv64-toolchain-nodistro.0.sh 即可安装使用,具体步骤我们会在后面介绍。

image-20230721151331729

  • 更多的参考 https://docs.yoctoproject.org/sdk-manual/working-projects.html

使用SDK开发LVGL

​ 如果你不想编译,只想体验一下yocto镜像的烧录过程,并且使用我们预先编译好的SDK来配合开发,可以用我提前准备好的deploy压缩包 链接:https://pan.baidu.com/s/1OD3ApN5JtOX8EQDz7JW1hg?pwd=2t4c 上传到 ubuntu 虚拟机,使用 tar -xvf deploy-light-beagle_thead-image-linux.tar.gz 命令就可以解压缩 ,里面存放了 编译来的所有资源,包含镜像 SDK deb 等。

安装SDK

​ 安装SDK这里可以理解为安装 工具链,Yocto工具自动把SDK工具链整合成了一个 .sh 脚本,只需要 在 终端任意目录执行 就可以自动安装。如下图所示。

image-20230721193247124

如下所示,按照提示说明,在同一终端下执行 . /usr/local/oecore-x86_64/environment-setup-riscv64-oe-linux 命令即可使其生效,生效后可以在当前终端下输入 riscv64-unknown-linux-gnu-gcc -v 来查看当前工具链的信息 如下图蓝框所示,这是一个 针对于 xuantie 900系列的专用工具链。

. /usr/local/oecore-x86_64/environment-setup-riscv64-oe-linux
riscv64-unknown-linux-gnu-gcc -v

image-20230721171422670

获取编译LVGL

源码示例所在仓库 https://gitee.com/weidongshan/BeagleV-Ahead_Lvg8-drm_Example 使用 git 命令在 ~ 家目录 clone,获取完成后进入到 BeagleV-Ahead_Lvg8-drm_Example 目录下即可开始编译。

cd ~
git clone  https://gitee.com/weidongshan/BeagleV-Ahead_Lvg8-drm_Example
cd BeagleV-Ahead_Lvg8-drm_Example
make

image-20230721195215076

  • 报错问题,提示找不到 libc.so等 C标准库

image-20230721193734997

​ 进入 /usr/local/oecore-x86_64/sysroots/riscv64-oe-linux/usr/lib 使用vim/nano/gedit等文本编辑器修改 libc.so 文件。

image-20230721194249929

​ 在 libc.so文件内修改GROUP整行为如下图所示,如果你的安装路径不是前面提示的默认 /usr/local/oecore-x86_64 ,则需要根据你的实际路径进行修改。

GROUP ( /usr/local/oecore-x86_64/sysroots/riscv64-oe-linux/lib/libc.so.6 /usr/local/oecore-x86_64/sysroots/riscv64-oe-linux/lib/libc_nonshared.a  AS_NEEDED ( /usr/local/oecore-x86_64/sysroots/riscv64-oe-linux/lib/ld-linux-riscv64xthead-lp64d.so.1 ) )

image-20230721191550350

​ 修改完成后回到 LVGL 目录,继续执行 make 命令,就可以编译完成,生成一个 最终的 可以在 BeagleV-Ahead 运行的 demo 程序,把这个demo 应用 拷贝到 BeagleV-Ahead开发板上,即可运行。

image-20230721194407318

上传程序

​ 因为BeagleV-Ahead Yocto系统网络不通,而且WIFI也无法使用,只能通过最原始的方式U盘挂载来进行数据的传输,使用U盘上传,首先把从ubuntu 编译出来的 LVGL demo程序拷贝到 U盘内,拷贝完成后 通过MicroUSB OTG线 连接到BeagleV-Ahead 并 使用mount命令进行挂载到 /mnt目录下。推荐 U盘格式化为 FAT32 格式,方便再BeagleV-Ahead挂载。

mount /dev/sda1 /mnt/
cd /mnt/
chmod +x demo

image-20230721201025514

运行程序

​ 在前面我们已经将 编译好的 demo 程序存放在了U盘,并挂载在了 BeagleV-Ahead 的 /mnt 目录下,因为BeagleV-Ahead Yocto系统 默认开机运行一个 weston 界面程序,所以我们要通过 kill -9 PID 命令来关闭它,才能运行 我们自己的 LVGL DEMO程序,首先 通过 ps -ef | grep “weston” 查找到当前进程的具体PID,得到PID号以后 就可以直接使用 kill -9 PID 来杀死他,如下截图。

image-20230721201348369

​ 关闭了默认的 weston 程序以后,就可以切换到 /mnt 目录下,执行 demo 示例程序,在当前路径下执行 需要 加上 ./ 如下图所示。

image-20230721201517258

​ 运行起来以后,可以观察显示屏,已经在运行了我们编译好的 LVGL DEMO示例。

d363eede7cddf6a3fc8d601b18ed9f2

  • 查找到当前进程的具体PID,得到PID号以后 就可以直接使用 kill -9 PID 来杀死他,如下截图。

[外链图片转存中…(img-zcT9CeWa-1690085570057)]

​ 关闭了默认的 weston 程序以后,就可以切换到 /mnt 目录下,执行 demo 示例程序,在当前路径下执行 需要 加上 ./ 如下图所示。

[外链图片转存中…(img-S6wWEu5y-1690085570057)]

​ 运行起来以后,可以观察显示屏,已经在运行了我们编译好的 LVGL DEMO示例。

[外链图片转存中…(img-FvB2qXo2-1690085570057)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/783264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL SERVER安装

其中服务器名称输入./自己本机电脑名称. nchar类型一个单位可以放一个汉字-------长度短的补空格一个字节8位一个汉字两个字节 char类型两个单位可以放一个汉字 nvarchar类型是可变长度-----------长度短不会补空格 varchar类型是可变长度两个单位可以放一个汉字---------…

电脑显示连接上WiFi,但没办法上网

问题: 电脑显示已经连接上WiFi。但是百度不出来东西,也没办法打开任何网页。 解决方法: win10系统 在左下角搜索栏,搜索“代理服务器设置”。 找到手动设置代理 —》关闭“使用代理服务” 【默认是打开的】 关闭之后即可上网~~

Python(三十四)条件表达式

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

数据结构--线性表两种存储方式的总结以及应用

这里写目录标题 顺序表和链表的比较存储密度链表的优缺点二者特点的比较以及使用场景 应用线性表的合并有序表的合并用顺序表实现用链表实现 案例实现多项式运算稀疏多项式的运算链表的创建多项式相加图书管理系统 顺序表和链表的比较 存储密度 链表的优缺点 二者特点的比较以…

mybatis学习笔记之在WEB中应用MyBatis

文章目录 数据库表的设计和准备数据环境搭建前端页面编写后端代码实现后端代码目录dao层servicewebpojoUtils 数据库表的设计和准备数据 环境搭建 在pom.xml中配置依赖&#xff08;logback、mybatis、mysql、servlet&#xff09; 注意引入tomcat 前端页面编写 <!DOCTYPE …

Ubuntu 网络配置指导手册

一、前言 从Ubuntu 17.10 Artful开始&#xff0c;Netplan取代ifupdown成为默认的配置实用程序&#xff0c;网络管理改成 netplan 方式处理&#xff0c;不在再采用从/etc/network/interfaces 里固定 IP 的配置 &#xff0c;配置写在 /etc/netplan/01-network-manager-all.yaml 或…

《Docker基础知识解析:容器与虚拟化的区别与优势,选择最佳方案优化云计算应用》

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

【MATLAB第57期】基于MATLAB的双隐含层BP神经网络回归预测模型(无工具箱版本及工具箱版本对比)

【MATLAB第57期】基于MATLAB的双隐含层BP神经网络回归预测模型&#xff08;无工具箱版本及工具箱版本对比&#xff09; 一、无工具箱版本 1.数据设置 数据为案例数据 。103行样本&#xff0c;7输入1输出数据。 2.参数设置 训练函数 梯度下降 HiddenUnit1Num10;%隐层1结点数…

Thinkphp+vue中小企业人事管理系统q731f

运行环境:phpstudy/wamp/xammp等 开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp5 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat/phpmyadmin中小企业人事管理系统的主要开发目标如下&#xff1a; &…

性能测试之 cpu 篇

目录 1 前言&#xff1a; 2.1 cpu 介绍 2.1.1 上下文切换 2.1.2 运行队列 2.1.3 CPU 利用率 2.2 cpu 性能监控 2.2.1 vmstat 的使用 2.2.2 案例学习:持续的 CPU 利用率 2.2.3 案例学习:超负荷调度 2.2.4. mpstat 工具的使用 2.2.5. 案例学习: 未充分使用的处理量 2…

windows-文件夹-默认打开方式被修改-修改为资源管理器

文章目录 1.方法2.总结 1.方法 如果文件夹默认修改方式被修改&#xff0c;可以打开注册表 按windowsR输入&#xff1a; regedit然后修改注册表项 HKEY_CLASSES_ROOT\Directory\shell将其它值删除&#xff0c;键入默认的windows资源管理器 %systemroot%\explorer如下图所示&…

【PostgreSQL内核学习(五)—— 查询规划(预处理)】

查询规划——预处理 预处理提升子链接/子查询预处理表达式预处理HAVING子句 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#xff0c;我们尊重他人的知识产权和学术成果&#xff0c;力求遵循合理使用原则&#xff0c;并在适用的情况下注明引用来源。 本文主…

【网络教程】如何快速的解决WordPress“另一更新正在进行”的问题

文章目录 WordPress提示“另一更新正在进行”解决方案手动删除数据库记录使用插件WordPress提示“另一更新正在进行” 当我们在更新WordPress的插件或者升级WordPress时会出现后台提示“另一更新正在进行”,如下图 当我们点击更新后,出现下图提示 出现上述问题是由于在升级Wo…

瑞吉外卖开发笔记 七(redis、Spring Cache)

缓存优化 问题说明 用户数量多&#xff0c;系统访问量大频繁访问数据库&#xff0c;系统性能下降&#xff0c;用户体验差 环境搭建 maven坐标 在项目的pom.xm1文件中导入spring data redis的maven坐标: <dependency> <groupId>org.springframework.boot</g…

【Hello mysql】 mysql的视图

Mysql专栏&#xff1a;Mysql 本篇博客简介&#xff1a;介绍mysql的视图 介绍mysql的视图 基本概念基本使用创建视图修改视图删除视图 视图规则和限制总结 基本概念 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数…

基于帧差法和形态学处理的行驶车辆跟踪算法matlab仿真

目录 1.算法理论概述 2.部分核心程序 3.算法运行软件版本 4.算法运行效果图预览 5.算法完整程序工程 1.算法理论概述 车辆跟踪是计算机视觉领域中的一个重要问题&#xff0c;它在交通监控、智能交通系统、自动驾驶等领域具有广泛的应用。本文介绍一种基于帧差法和形态学处…

maven安装配置、命令

maven: 是一个apache的一个开源项目&#xff0c;是一个项目管理工具&#xff0c;用来帮助开发者管理项目中的 jar&#xff08;mysql&#xff0c;jaskson&#xff0c;jwt&#xff09;&#xff0c;以及 jar 之间的依赖关系、完成项目的编译、测试、打包和发布等工作。 为什么学习…

WEB:wife_wife

背景知识 JavaScript原型链污染 题目 先尝试一下&#xff0c;注册了管理员账号 这里不知道邀请码&#xff0c;所以没有勾选 答案不正确 这里借鉴其他大佬的思路 查看源代码才知道&#xff0c;后端没有数据库&#xff0c;所以sql注入是不可能的 // post请求的路径 app.pos…

Python open()函数之buffering缓冲区策略

文章目录 一、buffering 缓冲策略二、示例1. 可交互文本文件1.1 buffering-1&#xff0c;行缓冲&#xff08;默认&#xff09;1.2 buffering0&#xff0c;文本模式不支持关闭缓冲区1.3 buffering1&#xff0c;行缓冲&#xff0c;同 buffering-11.4 buffering>1&#xff0c;i…

使用开源项目并使用docker的方式搭建代理接口

目录 一、docker部署代理池子测试1、windows搭建代理池子测试2、linux上搭建代理池子测试 一、docker部署代理池子测试 这里使用的代理池子项目是崔大的git开源的项目&#xff0c;代理项目代码这里选择的安装方式是docker安装&#xff0c;这样即使本地没有redis环境&#xff0…