Rust Ubuntu下編譯生成環境win程序踩坑指南

前言:

1,公司要給一線搞一個升級程序,需要在win下跑。 之前都是找開發總監幫忙,但是他最近比較忙。就讓我自己搞。有了下文.。說來慚愧,之前寫過一篇ubuntu下編譯windows的文章。里面的demo就一句話 fuck world。依賴的庫很少。這個是公司的工程,依賴的庫很多。想的有點簡單了。大家還是要把底子打好

工程介紹。

需要編譯patch.rs這個文件。

1,安裝target

rustup target add x86_64-pc-windows-gnu

2,安裝gcc?

 ?sudo apt-get install mingw-w64

執行編譯后提示?

?第一個坑:

warning: sys-info@0.9.1: c/windows.c:4:10: fatal error: windows.h: No such file or directory
warning: sys-info@0.9.1:     4 | #include <windows.h>
warning: sys-info@0.9.1:       |          ^~~~~~~~~~~
warning: sys-info@0.9.1: compilation terminated.error: failed to run custom build command for sys-info v0.9.1Caused by:process didn't exit successfully: /data/anymembak/target/debug/build/sys-info-f88ff491732c39f9/build-script-build (exit status: 1)--- stdoutTARGET = Some("x86_64-pc-windows-gnu")OPT_LEVEL = Some("0")HOST = Some("x86_64-unknown-linux-gnu")cargo:rerun-if-env-changed=CC_x86_64-pc-windows-gnuCC_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=CC_x86_64_pc_windows_gnuCC_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_CCTARGET_CC = Nonecargo:rerun-if-env-changed=CCCC = Some("/usr/bin/gcc")cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUTcargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTSCRATE_CC_NO_DEFAULTS = NoneDEBUG = Some("true")CARGO_CFG_TARGET_FEATURE = Some("cmpxchg16b,fxsr,sse,sse2,sse3")cargo:rerun-if-env-changed=CFLAGS_x86_64-pc-windows-gnuCFLAGS_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=CFLAGS_x86_64_pc_windows_gnuCFLAGS_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_CFLAGSTARGET_CFLAGS = Nonecargo:rerun-if-env-changed=CFLAGSCFLAGS = Nonecargo:warning=c/windows.c:4:10: fatal error: windows.h: No such file or directorycargo:warning=    4 | #include <windows.h>cargo:warning=      |          ^~~~~~~~~~~cargo:warning=compilation terminated.--- stderrerror occurred: Command "/usr/bin/gcc" "-O0" "-ffunction-sections" "-fdata-sections" "-gdwarf-2" "-fno-omit-frame-pointer" "-m64" "-Wall" "-Wextra" "-o" "/data/anymembak/target/x86_64-pc-windows-gnu/debug/build/sys-info-20c4b6441d409db8/out/db3b6bfb95261072-windows.o" "-c" "c/windows.c" with args gcc did not execute successfully (status code exit status: 1).warning: build failed, waiting for other jobs to finish...
error: failed to run custom build command for openssl-sys v0.9.102Caused by:process didn't exit successfully: /data/anymembak/target/debug/build/openssl-sys-e6c4b7d6399b36bc/build-script-main (exit status: 101)--- stdoutcargo:rerun-if-env-changed=X86_64_PC_WINDOWS_GNU_OPENSSL_NO_VENDORX86_64_PC_WINDOWS_GNU_OPENSSL_NO_VENDOR unsetcargo:rerun-if-env-changed=OPENSSL_NO_VENDOROPENSSL_NO_VENDOR unsetcargo:rerun-if-env-changed=CC_x86_64-pc-windows-gnuCC_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=CC_x86_64_pc_windows_gnuCC_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_CCTARGET_CC = Nonecargo:rerun-if-env-changed=CCCC = Some("/usr/bin/gcc")cargo:rerun-if-env-changed=CC_ENABLE_DEBUG_OUTPUTcargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTSCRATE_CC_NO_DEFAULTS = NoneDEBUG = Some("true")CARGO_CFG_TARGET_FEATURE = Some("cmpxchg16b,fxsr,sse,sse2,sse3")cargo:rerun-if-env-changed=CFLAGS_x86_64-pc-windows-gnuCFLAGS_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=CFLAGS_x86_64_pc_windows_gnuCFLAGS_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_CFLAGSTARGET_CFLAGS = Nonecargo:rerun-if-env-changed=CFLAGSCFLAGS = Nonecargo:rerun-if-env-changed=AR_x86_64-pc-windows-gnuAR_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=AR_x86_64_pc_windows_gnuAR_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_ARTARGET_AR = Nonecargo:rerun-if-env-changed=ARAR = NoneRUSTC_LINKER = Some("x86_64-w64-mingw32-gcc")cargo:rerun-if-env-changed=CROSS_COMPILECROSS_COMPILE = Nonecargo:rerun-if-env-changed=ARFLAGS_x86_64-pc-windows-gnuARFLAGS_x86_64-pc-windows-gnu = Nonecargo:rerun-if-env-changed=ARFLAGS_x86_64_pc_windows_gnuARFLAGS_x86_64_pc_windows_gnu = Nonecargo:rerun-if-env-changed=TARGET_ARFLAGSTARGET_ARFLAGS = Nonecargo:rerun-if-env-changed=ARFLAGSRANLIBFLAGS = Nonerunning cd "/data/anymembak/target/x86_64-pc-windows-gnu/debug/build/openssl-sys-22d1608ab45429ff/out/openssl-build/build/src" && env -u CROSS_COMPILE AR="x86_64-w64-mingw32-ar" CC="/usr/bin/gcc" RANLIB="x86_64-w64-mingw32-ranlib" "perl" "./Configure" "--prefix=/data/anymembak/target/x86_64-pc-windows-gnu/debug/build/openssl-sys-22d1608ab45429ff/out/openssl-build/install" "--openssldir=SYS$MANAGER:[OPENSSL]" "no-dso" "no-shared" "no-ssl3" "no-tests" "no-comp" "no-zlib" "no-zlib-dynamic" "--libdir=lib" "no-md2" "no-rc5" "no-weak-ssl-ciphers" "no-camellia" "no-idea" "no-seed" "no-capieng" "mingw64" "-O2" "-ffunction-sections" "-fdata-sections" "-gdwarf-2" "-fno-omit-frame-pointer" "-m64" "-Wa,-mbig-obj"Configuring OpenSSL version 3.2.1 for target mingw64Using os-specific seed configurationCreated configdata.pmRunning configdata.pmCreated Makefile.inCreated MakefileCreated include/openssl/configuration.h*************************************************************************                                                                ******   OpenSSL has been successfully configured                     ******                                                                ******   If you encounter a problem while building, please open an    ******   issue on GitHub <https://github.com/openssl/openssl/issues>  ******   and include the output from the following command:           ******                                                                ******       perl configdata.pm --dump                                ******                                                                ******   (If you are new to OpenSSL, you might want to consult the    ******   'Troubleshooting' section in the INSTALL.md file first)      ******                                                                *************************************************************************running cd "/data/anymembak/target/x86_64-pc-windows-gnu/debug/build/openssl-sys-22d1608ab45429ff/out/openssl-build/build/src" && "make" "depend"

因為沒有配置變量。簡單的說就是用了linux下的gcc ,肯定會失敗的。沒有找到對應的文件。

本質是 build-script 里調用的 C/匯編工具鏈仍然是 Linux 的 /usr/bin/gcc / /usr/bin/as,而不是 MinGW-w64 的交叉編譯器。于是:

rust 的配置文件中。增加env選項。

3,修改配置

.cargo/config.toml

[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"
ar     = "x86_64-w64-mingw32-ar"rustflags = ["-L/usr/x86_64-w64-mingw32/lib","-luser32","-lgdi32","-lkernel32","-ladvapi32",
][env]
CC_x86_64_pc_windows_gnu  = "x86_64-w64-mingw32-gcc"
CXX_x86_64_pc_windows_gnu = "x86_64-w64-mingw32-g++"
AR_x86_64_pc_windows_gnu  = "x86_64-w64-mingw32-ar"
RANLIB_x86_64_pc_windows_gnu = "x86_64-w64-mingw32-ranlib"
CFLAGS_x86_64_pc_windows_gnu = "-DWINVER=0x0600 -D_WIN32_WINNT=0x0600"
CXXFLAGS_x86_64_pc_windows_gnu = "-DWINVER=0x0600 -D_WIN32_WINNT=0x0600"

4、在執行

 note: /usr/bin/x86_64-w64-mingw32-ld: cannot find -lUser32: No such file or directorycollect2: error: ld returned 1 exit status

ls /usr/x86_64-w64-mingw32/lib/libuser32.a? 查看了下有文件。那就是沒有建立鏈接。需要執行link命令

sudo ln -s /usr/x86_64-w64-mingw32/lib/libuser32.a \/usr/x86_64-w64-mingw32/lib/libUser32.a

原因:

  • x86_64-pc-windows-gnu 目標下,Rust 會讓 MinGW-w64 鏈接器把 Windows 系統庫 User32、Kernel32、Gdi32 … 加到命令行(見源碼里 -luser32 -lkernel32 等)?GitHub。

  • 這些庫不是 DLL,而是 導入庫libuser32.alibkernel32.a …)。它們隨 MinGW-w64 CRT/headers 包一起提供。

  • 你的 Linux 系統上只裝了 x86_64-w64-mingw32-gcc,卻 沒有裝對應的 CRT 和 Win32 API 導入庫,結果鏈接階段就找不到 libuser32.a,于是報錯。

吐槽:不是哥們(linux大佬們),你們這樣搞 真的好嗎。。。

執行。成功。朋友們 ,歡呼吧 enjoy rust 。

但是體積非常大190M。原因:

默認的 cargo buildDebug 構建,再加上:

  • Windows GNU 目標會把 libstd、OpenSSL、Paho-MQTT 等一大堆依賴全都 靜態地 鏈進去;

  • Debug 模式保留完整符號表,方便 gdb/VS Code 調試;

  • 沒有做 LTO/代碼裁剪;

所以可執行文件非常大(上百 MB 很正常)。

執行優化命令

cargo build -p ${crate}--example patch --release --target x86_64-pc-windows-gnu
  • -p/--package test告訴 Cargo 只對 test這個包動手,避免工作區里其它 crate 被順帶編譯。

  • --example patch?表示只編譯 examples/patch.rs 生成的可執行文件。

體積:27M

繼續優化

cargo build -p {$crate}--example patch --profile release-size  --target x86_64-pc-windows-gnu

體積:1.6M 。完美。

解析:release-size

cargo.toml中添加 ;減少其他的附帶項

[profile.release-size]
inherits = "release"
# https://www.aloxaf.com/2018/09/reduce_rust_size/
strip = true  # Automatically strip symbols from the binary.
opt-level = 'z'  # Optimize for size.
lto = true #
panic = 'abort'
codegen-units = 1

GAME OVER

====這不是最后的

error: linking with x86_64-w64-mingw32-gcc failed: exit status: 1|= note: LC_ALL="C" PATH="/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/home/bruce/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/opt/apps/com.volcengine.feilian/files/mdm/opt/corplink-mdm/bin:/usr/arm-linux-gnueabihf/bin:/opt/arm-linux-musleabihf-cross/bin:/usr/bin:/usr/arm-linux-gnueabihf/bin:/opt/arm-linux-musleabihf-cross/bin:/usr/bin:/usr/arm-linux-gnueabihf/bin:/opt/arm-linux-musleabihf-cross/bin:/usr/bin" VSLANG="1033" "x86_64-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--dynamicbase" "-Wl,--disable-auto-image-base" "-m64" "-Wl,--high-entropy-va" "/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/rsbegin.o" "/tmp/rustcXg6Ks4/symbols.o" "/data/a/target/x86_64-pc-windows-gnu/release-size/deps/apm-9332c89c545fc484.apm.49192088e6a58101-cgu.0.rcgu.o" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/deps" "-L" "/data/a/target/release-size/deps" "-L" "/home/bruce/.cargo/registry/src/172.16.125.28-0c009ce4dc666fcd/windows_x86_64_gnu-0.48.5/lib" "-L" "/home/bruce/.cargo/registry/src/172.16.125.28-0c009ce4dc666fcd/windows_x86_64_gnu-0.52.5/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/openssl-sys-fc0e3cf9791f0c87/out/openssl-build/install/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/libz-ng-sys-4496acf21f6c5d86/out/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/libz-ng-sys-4496acf21f6c5d86/out/lib64" "-L" "/home/bruce/.cargo/registry/src/172.16.125.28-0c009ce4dc666fcd/winapi-x86_64-pc-windows-gnu-0.4.0/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/rdkafka-sys-c542daaeb01821a5/out/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/libz-sys-2a5b747d96b409af/out/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/libz-sys-2a5b747d96b409af/out/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/ring-b136e78e66c2fc5d/out" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/bzip2-sys-deae5791ed63b43a/out/lib" "-L" "/data/a/target/x86_64-pc-windows-gnu/release-size/build/zstd-sys-b793f55346992187/out" "-L" "/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib" "-Wl,-Bstatic" "/tmp/rustcXg6Ks4/libzstd_sys-599e1ba35eab961b.rlib" "/tmp/rustcXg6Ks4/libbzip2_sys-ef97b0b83aecce6e.rlib" "/tmp/rustcXg6Ks4/librdkafka_sys-b6c359dfa7f2ba04.rlib" "/tmp/rustcXg6Ks4/liblibz_sys-cdbcc05b320ff190.rlib" "/tmp/rustcXg6Ks4/libopenssl_sys-03b3492ba7b502cd.rlib" "/tmp/rustcXg6Ks4/libring-c9a050c1e55b0ed1.rlib" "/tmp/rustcXg6Ks4/liblibz_ng_sys-0100ee76e53efe33.rlib" "/tmp/rustcXg6Ks4/libstd-a1f74822451877d1.rlib" "/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/libcompiler_builtins-b44a9797859024b2.rlib" "-Wl,-Bdynamic" "-liphlpapi" "-lPacket" "-lgdi32" "-luser32" "-lcrypt32" "-lws2_32" "-ladvapi32" "-lwinapi_advapi32" "-lwinapi_cfgmgr32" "-lwinapi_comctl32" "-lwinapi_gdi32" "-lwinapi_kernel32" "-lwinapi_msimg32" "-lwinapi_opengl32" "-lwinapi_setupapi" "-lwinapi_user32" "-lwinapi_winspool" "-lwinapi_ws2_32" "-lkernel32" "-lwindows.0.52.0" "-lbcrypt" "-ladvapi32" "-lwindows.0.52.0" "-lntdll" "-lwindows.0.48.5" "-lwindows.0.52.0" "-lkernel32" "-ladvapi32" "-lkernel32" "-lntdll" "-luserenv" "-lws2_32" "-lkernel32" "-lws2_32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lgcc" "-lmsvcrt" "-luser32" "-lkernel32" "-Wl,--nxcompat" "-L" "/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib" "-o" "/data/a/target/x86_64-pc-windows-gnu/release-size/deps/apm-9332c89c545fc484.exe" "-Wl,--gc-sections" "-no-pie" "-Wl,--strip-all" "-nodefaultlibs" "-Wl,--disable-runtime-pseudo-reloc" "/home/bruce/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-pc-windows-gnu/lib/rsend.o"= note: /usr/bin/x86_64-w64-mingw32-ld: cannot find -lPacket: No such file or directorycollect2: error: ld returned 1 exit status

之后我編譯了整個crate,提示上面的問題。

cargo tree -e features | grep -i packet

能快速定位是哪條依賴鏈、哪個 feature 打開的,方便你決定 “裝 SDK” 還是 “關 feature

-lPacket 指的是 WinPcap / Npcap SDK 里的 Packet.lib (或 libPacket.a)
在 Windows 下,只要你鏈接了 librdkafka、pnet、winpcap 等底層網絡庫,build-rs 通常都會

沒有lib文件

  1. 下載 Npcap SDK
    https://npcap.com/#download → Npcap SDK(ZIP)。

  2. 拷貝頭文件與靜態庫(假設 SDK 解壓到 ~/npcap-sdk):

    sudo cp -R ~/npcap-sdk/Include/*  /usr/x86_64-w64-mingw32/include/
    sudo cp ~/npcap-sdk/Lib/x64/Packet.lib  /usr/x86_64-w64-mingw32/lib/

在編譯。成功。結束

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

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

相關文章

openharmony 4.1 運行busybox工具包(保姆教程)

1.下載 鏈接&#xff1a;Index of /downloads/binaries 進入其中后&#xff0c;找到 挑選適合你系統架構的版本&#xff0c;例如我這邊是 https://busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-armv7r 右鍵復制鏈接 打開迅雷&#xff0c;直接粘…

算法四 習題 1.3

數組實現棧 #include <iostream> #include <vector> #include <stdexcept> using namespace std;class MyStack { private:vector<int> data; // 用于存儲棧元素的數組public:// 構造函數MyStack() {}// 入棧操作void push(int val) {data.push_back…

GD32F407單片機開發入門(十七)內部RTC實時時鐘及實戰含源碼

文章目錄 一.概要二.RTC基本特點三.GD32單片機RTC內部結構圖四.配置一個RTC走秒例程五.工程源代碼下載六.小結 一.概要 RTC&#xff08;Real-Time Clock&#xff09;是一種用于追蹤和記錄實際時間的時鐘系統。RTC模塊提供了一個包含日期&#xff08;年/月/日&#xff09;和時間…

新能源汽車運動控制器核心芯片選型與優化:MCU、DCDC與CANFD協同設計

摘要&#xff1a;隨著新能源汽車產業的迅猛發展&#xff0c;汽車運動控制器的性能和可靠性面臨著更高的要求。本文深入探討了新能源汽車運動控制器中MCU&#xff08;微控制單元&#xff09;、DCDC電源管理芯片和CANFD總線通信芯片的選型要點、優化策略及其協同設計方案。通過綜…

2.maven 手動安裝 jar包

1.背景 有的時候&#xff0c;maven倉庫無法下載&#xff0c;可以手動安裝。本文以pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar為例。 2.預先準備 下載文件到本地指定位置。 2.1.安裝pom mvn install:install-file \-Dfile/home/wind/tmp/pentaho-aggdesigner-5.1.5-jh…

OpenCV 圖形API(75)圖像與通道拼接函數-----將 4 個單通道圖像矩陣 (GMat) 合并為一個 4 通道的多通道圖像矩陣函數merge4()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 由4個單通道矩陣創建一個4通道矩陣。 該函數將多個矩陣合并為一個單一的多通道矩陣。也就是說&#xff0c;輸出矩陣的每一個元素都是輸入矩陣對…

AI日報 · 2025年05月02日 | 再見GPT-4!OpenAI CEO 確認 GPT-4 已從 ChatGPT 界面正式移除

1、OpenAI CEO 確認 GPT-4 已從 ChatGPT 界面正式移除 在處理 GPT-4o 更新問題的同時&#xff0c;OpenAI CEO Sam Altman 于 5 月 1 日在 X 平臺發文&#xff0c;正式確認初代 GPT-4 模型已從 ChatGPT 主用戶界面中移除。此舉遵循了 OpenAI 此前公布的計劃&#xff0c;即在 4 …

patch命令在代碼管理中的應用

patch 是一個用于將差異文件&#xff08;補丁&#xff09;應用到源代碼的工具&#xff0c;常用于修復 bug、添加功能或調整代碼結構。在您提供的代碼中&#xff0c;patch 命令通過一系列補丁文件&#xff08;.patch&#xff09;修改了 open-amp 庫的源代碼。 patch 命令的核心作…

spring-ai集成langfuse

1、pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.…

PyTorch 與 TensorFlow:深度學習框架的深度剖析與實戰對比

PyTorch 與 TensorFlow&#xff1a;深度學習框架的深度剖析與實戰對比 摘要 &#xff1a;本文深入對比 PyTorch 與 TensorFlow 兩大深度學習框架&#xff0c;從核心架構、優缺點、適用場景等多維度剖析&#xff0c;結合實例講解&#xff0c;幫助開發者清晰理解兩者特性&#x…

如何配置NGINX作為反向代理服務器來緩存后端服務的響應?

大家好&#xff0c;我是鋒哥。今天分享關于【如何配置NGINX作為反向代理服務器來緩存后端服務的響應&#xff1f;】面試題。希望對大家有幫助&#xff1b; 如何配置NGINX作為反向代理服務器來緩存后端服務的響應&#xff1f; 1000道 互聯網大廠Java工程師 精選面試題-Java資源…

DiT:文檔圖像Transformer 的自監督預訓練

摘要 圖像transformer&#xff08;Image Transformer&#xff09;最近在自然圖像理解方面取得了顯著進展&#xff0c; 無論是使用監督&#xff08;ViT、DeiT等&#xff09;還是自監督&#xff08;BEiT、MAE等&#xff09;預訓練技術。在本文中&#xff0c;我們提出了DiT&#…

51c嵌入式~電路~合集4

我自己的原文哦~ https://blog.51cto.com/whaosoft/11888986 一、電流檢測電路 電流檢測的應用 電路檢測電路常用于&#xff1a;高壓短路保護、電機控制、DC/DC換流器、系統功耗管理、二次電池的電流管理、蓄電池管理等電流檢測等場景。電路專輯 對于大部分應用&#xff…

【Git】萬字詳解 Git 的原理與使用(上)

&#x1f970;&#x1f970;&#x1f970;來都來了&#xff0c;不妨點個關注叭&#xff01; &#x1f449;博客主頁&#xff1a;歡迎各位大佬!&#x1f448; 文章目錄 1. 初識 Git1.1 Git 是什么&#xff1f;1.2 為什么要有 Git 2. 安裝 Git2.1 Linux-Ubuntu 安裝 Git2.2 Windo…

【原創開發】無印去水印[特殊字符]短視頻去水印工具[特殊字符]支持一鍵批量解析

支持&#xff1a;快手&#xff0c;抖音&#xff0c;小紅書&#xff0c;嗶哩嗶哩&#xff0c;等多款應用去水印&#xff0c;支持圖集解析下載 【應用名稱】&#xff1a;無印 【應用版本】&#xff1a;1.3 【應用大小】&#xff1a;17M 【測試機型】&#xff1a;小米14 【下載鏈…

qemu(3) -- qemu-arm使用

1. 前言 qemu中有很多的特技&#xff0c;此處記錄下qemu-arm的使用方式&#xff0c;簡單來說qemu-system-xx用于虛擬整個設備&#xff0c;包括操作系統的運行環境&#xff0c;而qemu-xx僅虛擬Linux應用程序的環境&#xff0c;不涉及操作系統&#xff0c;應用程序的系統調用有宿…

Docker的簡單使用(不全)

Docker Hello World Docker 允許在容器內運行應用程序&#xff0c;使用docker run命令來在容器內運行一個應用程序 輸出Hello World runoobrunoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"Hello world docker&#xff1a;Docker的二進制執行文件 run…

SALOME源碼分析: 命令系統

本文分析SALOME中命令系統&#xff0c;涉及的知識點包括&#xff0c; MDF框架數據對象模型 注1&#xff1a;限于研究水平&#xff0c;分析難免不當&#xff0c;歡迎批評指正。注2&#xff1a;文章內容會不定期更新。 一、命令對象 1.1 Class Hierarchy 1.2 SUIT_Operation #…

Bootstrap(自助法)??:無需假設分布的統計推斷工具

核心思想?? Bootstrap 是一種??重采樣&#xff08;Resampling&#xff09;技術??&#xff0c;通過在原始數據中??有放回地重復抽樣??&#xff0c;生成大量新樣本集&#xff0c;用于估計統計量&#xff08;如均值、方差&#xff09;的分布或模型性能的不確定性。 ??…

沙箱逃逸(Python沙盒逃逸深度解析)

沙箱逃逸&#xff08;Python沙盒逃逸深度解析&#xff09; 一、沙盒逃逸的核心目標 執行系統命令 通過調用os.system、subprocess.Popen等函數執行Shell命令&#xff0c;例如讀取文件或反彈Shell。 文件操作 讀取敏感文件&#xff08;如/etc/passwd&#xff09;、寫入后門文件…