Ubuntu Qt x64平臺搭建 arm64 編譯套件

環境:
主機平臺:Ubuntu22.04.5 x86_64
目標平臺:IMX8QM Ubuntu22.04.5 arm64
Qt版本:Qt6.5.3 LST
GUI實現:QML

一、獲取Ubuntu22.04.5 x86_64 系統鏡像文件

1、鏡像下載與安裝

使用國內鏡像下載對應版本的Ubuntu鏡像,我使用的是阿里云的鏡像
在這里插入圖片描述
在這里插入圖片描述

2、安裝虛擬機

在這里插入圖片描述

3、安裝后的一些問題的解決

Ubuntu18.6 學習QT問題記錄以及虛擬機安裝Ubuntu后的設置

4、C/C++ 開發環境安裝

二、目標平臺安裝 Qt 6.5.3

1、下載在線安裝程序

在Qt 官網下載Qt在線安裝包,這里需要在官網注冊一個賬號,登陸后才可以下載,我下載Linux x64版本。
在這里插入圖片描述

2、Ubuntu開啟ftp服務,上傳qt在線安裝程序。

在這里插入圖片描述

3、命令行啟動,使用阿里云鏡像

給在線安裝程序可執行權限
在這里插入圖片描述

./qt-online-installer-linux-x64-4.10.0.run  --mirror https://mirrors.aliyun.com/qt/

4、下載所需版本

Qt提示需要安裝庫
在這里插入圖片描述
使用apt安裝庫文件,下載所需版本和組件
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

5、配置Qt所需環境(在步驟4時已安裝)

sudo apt install libxcb-cursor0 libxcb-cursor-dev
sudo apt-get install build-essential libgl1-mesa-dev

1、libxcb-cursor0 和 libxcb-cursor-dev 是與 XCB(X C Binding) 相關的庫,主要用于在 Linux 系統中處理鼠標光標(cursor)相關的功能。
2、build-essential這是一個元包(meta-package),它會自動安裝一系列編譯 C/C++ 程序所需的基礎工具和庫,包括:
編譯器:gcc(GNU C 編譯器)、g++(GNU C++ 編譯器)
構建工具:make(用于解析 Makefile 并執行編譯流程)
標準庫:libc6-dev(GNU C 標準庫的開發文件)等
作用:提供編譯 C/C++ 程序的最小環境。幾乎所有需要編譯源碼的場景(包括 Qt 項目構建)都需要先安裝它,否則會出現 “缺少編譯器”“無法識別 make 命令” 等錯誤。
3、這是 Mesa 3D 圖形庫的開發包,主要提供:OpenGL 接口的實現(用于 2D/3D 圖形渲染)頭文件(如 GL/gl.h)和鏈接庫,供程序編譯時調用
作用:
Qt(尤其是涉及圖形渲染的模塊,如 Qt Widgets、Qt Quick)依賴 OpenGL 進行界面繪制。如果缺少這個包,編譯 Qt 項目時可能會出現 “找不到 GL 庫”“無法鏈接 OpenGL” 等錯誤,導致圖形界面程序無法構建或運行。

** 注意:使用在線安裝工具安裝qt后,第一次運行工程出現error: cmake project configuration failed. no cmake configuration for build type “debug” found. check general messages for more information.錯誤,可能是沒有設置Qt運行環境**

6、創建示例工程并測試

創建工程運行報錯,安裝如下庫后回復正常,錯誤內容為:error: cmake project configuration failed. no cmake configuration for build type “debug” found. check general messages for more information.
安裝OpenGl相關依賴庫

sudo apt update && sudo apt install libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev

安裝xcb 插件依賴

sudo apt install libxcb-cursor0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0

在這里插入圖片描述

7、運行從git 下載的Qt項目

這個項目時從我的另一臺電腦上的Ubuntu虛擬機上傳到GIT的,Qt版本一致,運行前先配置項目中的CAMKE等設置,因為兩臺Ubuntu虛擬機安裝Qt的目錄不同,否則會報錯

三、交叉編譯環境搭建(參考野火教程)

野火Qt6交叉編譯教程

1、宿主機下載相關庫與工具

sudo apt update
sudo apt install libssl-dev gperf pkg-config git bison ninja-build
sudo apt install make build-essential libclang-dev \libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev \libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-glx0-dev \libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev \libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev \libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev \libatspi2.0-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev

2、獲取并安裝交叉編譯器

這里我直接用命令下載的編譯器

wangju@wangju-virtual-machine:~$ which aarch64-linux-gnu-g++
/usr/bin/aarch64-linux-gnu-g++
wangju@wangju-virtual-machine:~$ which g++
/usr/bin/g++
wangju@wangju-virtual-machine:~$ 

3、構建sysroot目錄

板卡下載相關庫

# 安裝一些庫和工具等,按自己需要安裝
sudo apt update# x11相關
sudo apt-get install -y libx11-dev freetds-dev libsqlite0-dev libpq-dev libiodbc2-dev firebird-dev \libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev  \libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev \libxcb-icccm4 libxcb-icccm4-dev libxcb-sync1 libxcb-sync-dev libxcb-render-util0 \libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev \libxcb-glx0-dev libxi-dev libdrm-dev libxcb-xinerama0 libxcb-xinerama0-dev libatspi2.0-dev \libxcursor-dev libxcomposite-dev libxdamage-dev libxss-dev libxtst-dev libpci-dev libcap-dev \libxrandr-dev libdirectfb-dev libaudio-dev libxkbcommon-x11-dev# gst 1.0相關
sudo apt-get install -y libgstreamer1.0-0 gstreamer1.0-plugins-base \gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools libunwind-dev# 其他等等
sudo apt-get install -y libfreetype6-dev libicu-dev libsqlite3-dev libasound2-dev libnss3-dev \libxss-dev libxtst-dev libpci-dev libcap-dev libsrtp0-dev libxrandr-dev libdirectfb-dev libaudio-dev \libavcodec-dev libavformat-dev libswscale-dev libts-dev libfontconfig1-devsudo apt-get install -y libssl-dev libdbus-1-dev libglib2-dev libegl1-mesa-dev \libgbm-dev libgles2-mesa-dev libgles2-mesa rsyslog  libjpeg-dev

然后我將 /lib /usr 這兩個目錄通過ftp全部下載到了主機上。具體可以參考野火教程

4、安裝CMAKE(源碼編譯安裝)

先用命令安裝cmake。
按照野火教程,先為主機編譯安裝qt源碼。
然后新建一個cmake 工具鏈文件,用來指定CMAKE相關參數(交叉編譯需要)

# 這里設置cmake支持的最小版本
cmake_minimum_required(VERSION 3.18)
include_guard(GLOBAL)set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)# 指定sysroot目錄 需要自己修改
set(TARGET_SYSROOT /home/wangju/develope/sysroot) # 指定前面獲取的交叉編譯器路徑  需要自己修改
set(CROSS_COMPILER /usr/bin/aarch64-linux-gnu)set(CMAKE_SYSROOT ${TARGET_SYSROOT})set(CMAKE_C_COMPILER ${CROSS_COMPILER}-gcc)
set(CMAKE_CXX_COMPILER ${CROSS_COMPILER}-g++)set(CMAKE_LIBRARY_ARCHITECTURE aarch64-linux-gnu)# 庫路徑
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wl,-rpath-link,${CMAKE_SYSROOT}/lib/${CMAKE_LIBRARY_ARCHITECTURE} -fPIC -Wl,-rpath-link,${CMAKE_SYSROOT}/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE} -L${CMAKE_SYSROOT}/lib -L${CMAKE_SYSROOT}/lib/${CMAKE_LIBRARY_ARCHITECTURE}  -L${CMAKE_SYSROOT}/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE} -L${CMAKE_SYSROOT}/usr/lib -I${TARGET_SYSROOT}/usr/include -I${TARGET_SYSROOT}/usr/include/${CMAKE_LIBRARY_ARCHITECTURE}")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")# pkg config路徑
set(ENV{PKG_CONFIG_PATH} ${TARGET_SYSROOT}/usr/lib/pkgconfig:${TARGET_SYSROOT}/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/pkgconfig:${TARGET_SYSROOT}/usr/share/pkgconfig/)
set(ENV{PKG_CONFIG_LIBDIR} ${TARGET_SYSROOT}/usr/lib/pkgconfig:${TARGET_SYSROOT}/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/pkgconfig:${TARGET_SYSROOT}/usr/share/pkgconfig/)
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT})set(QT_COMPILER_FLAGS "-march=armv8-a")
set(QT_COMPILER_FLAGS_RELEASE "-O2 -pipe")
set(QT_LINKER_FLAGS "-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-fuse-ld=gold -ldbus-1")set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)include(CMakeInitializeConfigs)function(cmake_initialize_per_config_variable _PREFIX _DOCSTRING)
if (_PREFIX MATCHES "CMAKE_(C|CXX|ASM)_FLAGS")set(CMAKE_${CMAKE_MATCH_1}_FLAGS_INIT "${QT_COMPILER_FLAGS}")foreach (config DEBUG RELEASE MINSIZEREL RELWITHDEBINFO)if (DEFINED QT_COMPILER_FLAGS_${config})set(CMAKE_${CMAKE_MATCH_1}_FLAGS_${config}_INIT "${QT_COMPILER_FLAGS_${config}}")endif()endforeach()
endif()if (_PREFIX MATCHES "CMAKE_(SHARED|MODULE|EXE)_LINKER_FLAGS")foreach (config SHARED MODULE EXE)set(CMAKE_${config}_LINKER_FLAGS_INIT "${QT_LINKER_FLAGS}")endforeach()
endif()_cmake_initialize_per_config_variable(${ARGV})
endfunction()

然后在qt源碼目錄執行cmake配置命令

cat arm64_cmake 
cmake ../ -GNinja -DCMAKE_BUILD_TYPE=Release  -DINPUT_opengl=es2 -DQT_BUILD_EXAMPLES=OFF -DQT_BUILD_TESTS=OFF -DQT_HOST_PATH=/home/wangju/develope/qt/qt6Host -DCMAKE_STAGING_PREFIX=/home/wangju/develope/sysroot/opt/prefix -DCMAKE_INSTALL_PREFIX=/home/wangju/develope/sysroot/opt/prefix -DCMAKE_TOOLCHAIN_FILE=/home/wangju/develope/lubancat_toolchain.cmake  -DQT_QMAKE_TARGET_MKSPEC=devices/linux-imx8-g++ -DQT_FEATURE_xcb=OFF -DFEATURE_xcb_xlib=OFF -DQT_FEATURE_xlib=OFF -DQT_FEATURE_eglfs=ON -DQT_FEATURE_wayland=ON  -DFEATURE_qtwebengine_build=OFF 

因為我的sysroot 缺少 X11 相關德 庫,所以將xcb 編譯選項關閉,-DQT_FEATURE_xcb=OFF -DFEATURE_xcb_xlib=OFF -DQT_FEATURE_xlib=OFF。 開啟了-DQT_FEATURE_eglfs=ON -DQT_FEATURE_wayland=ON ,對于 i.MX8QM 這樣的嵌入式設備,使用 EGLFS 或 Wayland 作為圖形后端比使用傳統的 X11/XCB 更加合適,i.MX8QM 具有強大的 Vivante GPU,EGLFS 可以直接利用硬件加速。對于野火文件中的設備文件,我發現qt源碼中有 NXP 的 imx8系列設備的模板,我直接用的官方的設備文件。
在這里插入圖片描述

#
# qmake configuration for the NXP i.MX8 based boards (64-bit)
#
# The configuration below is set up for running with the fbdev-style
# Vivante graphics stack. (so eglfs with the eglfs_viv backend, no
# direct drm use via eglfs_kms)# Wayland should also be functional. However, when writing Wayland
# *compositors* with Qt, the eglfs backend will have to be switched to
# eglfs_viv_wl by setting the QT_QPA_EGLFS_INTEGRATION environment
# variable.
#
# Below is an example configure line that assumes there is an AArch64
# toolchain and sysroot available in $HOME/imx8. On device Qt is
# expected to be placed under /usr/local/qt514 whereas on the host
# 'make install' will copy the host tools and the target libraries to
# $HOME/imx8/qt5.
#
# ./configure -release -opengl es2 -device linux-imx8-g++ \
#   -device-option CROSS_COMPILE=~/imx8/toolchain/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux- \
#   -sysroot ~/imx8/sysroot \
#   -opensource -confirm-license -make libs -prefix /usr/local/qt514 -extprefix ~/imx8/qt5 -vinclude(../common/linux_device_pre.conf)QMAKE_LIBS_EGL         += -lEGL
QMAKE_LIBS_OPENGL_ES2  += -lGLESv2 -lEGL -lGAL
QMAKE_LIBS_OPENVG      += -lOpenVG -lEGL -lGALIMX8_CFLAGS             = -march=armv8-a -mtune=cortex-a72.cortex-a53 -DLINUX=1 -DEGL_API_FB=1
QMAKE_CFLAGS           += $$IMX8_CFLAGS
QMAKE_CXXFLAGS         += $$IMX8_CFLAGSDISTRO_OPTS += aarch64# Preferred eglfs backend
EGLFS_DEVICE_INTEGRATION = eglfs_vivinclude(../common/linux_arm_device_post.conf)load(qt_config)

最后執行cmake 編譯命令、編譯完后安裝。這里要注意編譯所需空間大,如果按照野火教程,先為主機編譯qt源碼,所需空間較大,建立虛擬機時應該一次性剛給100G 左右的空間,大一點最好,不然在編譯或者安裝時會出現空間不足導致安裝失敗的情況。建立好虛擬機后擴展磁盤或者添加磁盤比較麻煩,最好一次給夠。

問題記錄

1、QT 引用資源文件報錯問題(已解決)

2、QT工程 Windows 移動到 Linux ,編譯報錯問題

3、上傳到git的Qt項目在另一臺虛擬機再次下載后編譯報錯問題

4、如何下載目標平臺對應版本的編譯器

最好是開發板系統和主機系統版本一致。

5、使用在線安裝安裝qt后創建項目報錯,CAMKE找不到Qt6Quick 、QtWidget等組件

依次安裝了 C/C++開發工具、OpenGL 依賴、xcb依賴,具體是那個的問題不清楚,具體安裝步驟在上文列舉了。

6、下載公版arm sysroot ,使用 chroot 為 sysroot 下載必要庫文件

1、chroot使用前更換sysroot apt源為國內源
sudo chroot /path/to/arm-sysroot /bin/bash
cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 清空原有內容并寫入清華源
cat > /etc/apt/sources.list << EOF
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
EOF
# 更新源列表
apt update# 測試是否能正常下載(可選)
apt install -y vim  # 安裝一個小工具驗證

使用apt前要將宿主機文件系統掛在到sysroot,否則無網絡

2、chroot使用前掛在必要的文件系統,如網絡等
sudo mount --bind /dev /path/to/arm-sysroot/dev
sudo mount -t proc /proc /path/to/arm-sysroot/proc
sudo mount --bind /sys /path/to/arm-sysroot/sys
# 使用完畢,卸載
sudo umount /path/to/arm-sysroot/dev
sudo umount /path/to/arm-sysroot/proc
sudo umount /path/to/arm-sysroot/sys
3、chroot 在x86上運行 arm的sysroot,需要下載QEMU 模擬器
sudo apt update
sudo apt install qemu-user-static binfmt-support
sudo cp /usr/bin/qemu-arm-static sysroot/usr/bin/
4、掛載文件系統后沒網,可能是sysyroot DNS需要設置
sudo cp /etc/resolv.conf sysroot/etc/
sudo nano sysroot/etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8
nameserver 223.5.5.5
5、每次進入前掛載宿主機目錄

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96139.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96139.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96139.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql第五天學習 Mysql全局優化總結

Mysql全局優化總結 從上圖可以看出SQL及索引的優化效果是最好的&#xff0c;而且成本最低&#xff0c;所以工作中我們要在這塊花更多時間。 補充一點配置文件my.ini或my.cnf的全局參數&#xff1a; 假設服務器配置為&#xff1a; CPU&#xff1a;32核內存&#xff1a;64GDISK…

leetcode hot100 二叉搜索樹

二叉搜索樹的第k小的數class Solution:def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:# 二叉搜索樹的中序遍歷是 升序排列的&#xff0c; 求第k小的&#xff0c;即第k個數self.res []def fun(root):if not root:returnfun(root.left)if root:self.res.a…

從Sonnet到Opus:一次解決RAG知識庫流式輸出難題的探索

又到周末&#xff0c;還得消耗消耗 ?? anyrouter 上的Claude資源&#xff0c;萬一哪天都不能用了&#xff0c;也是浪費。 2025/9/5&#xff0c;Claude AI 的母公司 Anthropic 發布了一項新政策&#xff1a;即日起&#xff0c;Anthropic將不再對中國控股公司及其海外子公司開放…

「數據獲取」中國科技統計年鑒(1991-2024)Excel

02、數據詳情數據名稱&#xff1a;《中國科技統計年鑒》&#xff08;1991-2024年&#xff09;數據年份&#xff1a;1991-202403、數據截圖 04、獲取方式&#xff08;獲取方式看綁定的資源&#xff09;

SimLingo:純視覺框架下的自動駕駛視覺 - 語言 - 動作融合模型

摘要 本文深入探討了 SimLingo&#xff0c;一個在自動駕駛領域具有開創性意義的視覺-語言-動作一體化模型。SimLingo 創新性地將自動駕駛、語言理解和指令感知控制整合到一個統一的純攝像頭框架中&#xff0c;顯著提升了自動駕駛系統在復雜環境中的感知、決策與執行能力。該模…

第五十四天(SQL注入數據類型參數格式JSONXML編碼加密符號閉合復盤報告)

#SQL注入產生原理&#xff1a; 代碼中執行的SQL語句存在可控變量導致 #常見SQL注入的利用過程&#xff1a; 1、判斷數據庫類型 2、判斷參數類型及格式 3、判斷數據格式及提交 4、判斷數據回顯及防護 5、獲取數據庫名&#xff0c;表名&#xff0c;列名 5、獲取對應數據及…

VMWare上搭建Hive集群

文章目錄1. MySQL安裝2. 安裝Hive集群3. 使用Hive客戶端4. 實戰總結本實戰在VMware上搭建Hive集群&#xff0c;集成MySQL作為元數據存儲&#xff0c;完成Hive環境配置、元數據初始化及HDFS倉庫目錄創建&#xff0c;實現Hive on Hadoop的SQL查詢能力&#xff0c;為大數據分析提供…

Android網絡之WIFI技術網絡模型概述

文章目錄術語1、WLAN與WIFI2、802.11 WIFI無線網絡標準演進3、WIFI5、WIFI6和WIFI7的最高速率對比4、WIFI網絡中的各個角色&#xff08;元件&#xff09;1&#xff09;網絡拓撲架構圖5、802.11權威指南1&#xff09;OSI與TCP/IP2&#xff09;IEEE 802.11協議簇介紹3&#xff09…

游戲中的設計模式——第三篇 簡單工廠模式

5. 簡單工廠模式 5.1 簡單工廠模式的定義 簡單工廠模式的核心是定義一個創建對象的接口&#xff0c;將對象的創建和本身的業務邏輯分離&#xff0c;降低系統的耦合度&#xff0c;使得兩個修改起來相對容易些&#xff0c;當以后實現改變時&#xff0c;只需要修改工廠類即可。 5.…

基于SVN搭建企業內部知識庫系統實踐

一、準備工作 CentOS 7 服務器&#xff1a;確保你有 root 或 sudo 權限&#xff0c;可以訪問該服務器。Windows 客戶端&#xff1a;你將需要在 Windows 上安裝 TortoiseSVN 客戶端來與 SVN 服務器交互。防火墻&#xff1a;確保你的防火墻已開放 3690 端口&#xff0c;用于 SVN…

SQL注入7----(盲注與回顯)

一.前言 在我們的注入語句被帶入數據庫查詢但卻什么都沒有返回的情況我們該怎么辦&#xff1f;例如應用程序就會返回 一個"通用的"的頁面&#xff0c;或者重定向一個通用頁面&#xff08;可能為網站首頁&#xff09;。這時&#xff0c;我們之前學習的SQL注入辦 法就…

尚硅谷宋紅康JVM全套教程(詳解java虛擬機)

https://www.bilibili.com/opus/1071553679925968898 案例7&#xff1a;日均百萬訂單系統JVM參數設置 https://github.com/wei198621/jvm_by_atguigu https://github.com/xftxyz2001/atguigu-jvm/blob/main/JavaYouthdocsJVM/%E7%AC%AC1%E7%AB%A0-JVM%E4%B8%8EJava%E4%BD%…

鴻蒙NEXT開發實戰:圖片顯示、幾何圖形與自定義繪制詳解

探索HarmonyOS NEXT強大的圖形渲染能力&#xff0c;從圖片展示到自定義繪圖 HarmonyOS NEXT作為華為自主研發的操作系統&#xff0c;為開發者提供了一套豐富而強大的圖形渲染能力。無論是顯示圖片、繪制幾何圖形&#xff0c;還是實現復雜的自定義繪圖&#xff0c;鴻蒙都提供了簡…

python + Flask模塊學習 2 接收用戶請求并返回json數據

用到的模塊還是flask&#xff0c;用到的類有Flask&#xff0c; request&#xff0c; jsonfiy &#x1f642; 目錄 1、GET請求 2、POST請求 1、表單格式 2、json格式 就醬&#xff0c;也比較簡單&#xff0c;下一篇說簡單的授權&#xff0c;簡單來說就是比如用戶付費買了服…

國內外常用的免費BUG管理工具選型

幫助用戶根據自身情況做決定&#xff0c;比如團隊規模、技術能力、是否需要移動端支持等。避免只是羅列工具&#xff0c;而是提供實際選擇的維度。 國內外常用的免費BUG管理工具選擇非常豐富&#xff0c;從輕量級到功能全面型都有覆蓋。我將它們分為幾類&#xff0c;并詳細介紹…

JavaScript的事件循環機制

1.事件循環的理解JavaScript是單線程的&#xff0c;意味著它一次只能執行一個任務。而事件循環就是去協調在JavaScript環境中運行的同步任務、異步任務(微任務、宏任務)的執行順序的一種機制。它是 JavaScript 實現單線程非阻塞異步執行的核心。2.事件循環的執行順序同步任務—…

數據結構——棧(Java)

目錄 一定義. 入棧 出棧 二.棧與線性表的關系 三.棧的實現方式 四.鏈表實現棧 1.結點的API設計 2.棧的API設計 2.1棧的初始化設計 2.2元素入棧 2.3元素出棧 五.括號匹配問題 完整代碼展示 答案 一定義. 棧是一種基于先進后出&#xff08;FILO&#xff09;的數據…

科研筆記:數學建模啟發的課題研究方法

借鑒數學建模的思路解決科學問題或開展課題研究&#xff0c;核心是將實際問題抽象為數學框架&#xff0c;通過定量分析、邏輯推演和驗證優化&#xff0c;實現對問題的精準描述、解釋或預測。其本質是“從現實到數學&#xff0c;再從數學回歸現實”的迭代過程&#xff0c;適用于…

Agent落地到底選擇LangChain 還是 LangGraph

核心概念 LangChain:一個用于構建由大型語言模型驅動的應用程序的框架。它提供了大量的組件和現成的鏈,旨在簡化和標準化應用程序與LLM交互的過程。 LangGraph:一個用于在LangChain之上構建有狀態、多參與者的 工作流 的庫。它特別擅長處理具有循環、分支和復雜協調的代理(…

ChatGPT下的相關聊天提示詞

問&#xff1a;如果我覺得一個子對話里&#xff0c;聊天聊得太多&#xff0c;在這個項目下新開一個子對話&#xff0c;但是不想把上次太多的信息 都復制過來&#xff0c;有沒有什么辦法關鍵詞&#xff1a;項目、子對話&#xff0c;上下文ChatGPT:有辦法的 ?在 ChatGPT 里&…