GDAL 1.11.5 + MinGW32 静态编译实战指南
简介本资源为Windows平台下预编译完成的GDAL 1.11.5开发库专为使用QtMinGW版进行地理信息应用开发的中高级开发者设计可显著规避源码编译耗时长、依赖复杂、环境配置易出错等痛点直接集成至.pro工程即可调用栅格/矢量数据读写、坐标转换、投影定义等核心功能。压缩包共149个文件含63个头文件h支撑C/C接口调用22个可执行工具exe用于命令行数据处理28个CSV格式的坐标系与投影参数表如pcs.csv、gcs.csv以及libgdal.a、libgdal.dll.a等关键静态/导入库和gdal-config配置脚本整体体积74.73MB结构完整、开箱即用。目前已有780人学习下载附带典型异常排查指引如程序崩溃问题并提供清晰的环境变量配置与Qt项目链接说明大幅降低GDAL在MinGWQt生态下的落地门槛。1. GDAL 1.11.5 MinGW32在无MSVC环境的Windows上编译地理空间库的硬核路径你手头有一台老旧开发机系统是 Windows 7没有安装 Visual Studio但项目紧急要求接入栅格数据读写能力——比如打开 GeoTIFF、读取 DEM 高程、裁剪 NetCDF 子区。此时pip install gdal直接报错conda 通道里最新版又卡在 3.8而你的 C 主工程必须用 MinGW32非 MinGW-w64链入静态库。这不是“能不能装”的问题而是“如何让 GDAL 1.11.5 这个特定老版本在 MinGW32 工具链下真正编译通过、链接不崩溃、运行不段错误”的实操命题。GDAL 1.11.5 是一个关键分水岭它仍是最后一个原生支持 MinGW32i686-w64-mingw32-gcc完整构建的稳定分支后续版本因弃用旧式 configure 脚本、强依赖 CMake 和 MSVC 运行时已彻底切断该路径。本文不讲“用现成 wheel”只带你从源码、补丁、配置、链接器参数四层穿透把gdal_translate、OGRSFDriverRegistrar::GetRegistrar()、GDALOpen()全部跑通。适合嵌入式 GIS 开发者、跨平台 C 工程师、以及所有被“MinGW32 GDAL”组合困在十年前技术栈里的实战派。2. 为什么必须死磕 GDAL 1.11.5MinGW32 兼容性断点深度拆解2.1 GDAL 版本演进中的 MinGW 支持断崖GDAL 的构建体系在 1.11.x → 2.0.0 之间发生根本性迁移。1.11.5 仍采用 Autotoolsconfigure.acMakefile.in驱动其configure脚本内建对i686-pc-mingw32和i686-w64-mingw32的识别逻辑能正确推导出-mno-cygwin早期 MinGW 标志、-D__MSVCRT_VERSION__0x0700等关键宏并生成适配 MinGW32 CRT 的 Makefile 规则。而 GDAL 2.0.0 起全面转向 CMake其FindPackage(Threads)、target_link_libraries()默认绑定 MSVCRT 或 UCRT且gdal_config.h中大量使用__declspec(dllimport)语法与 MinGW32 的__attribute__((dllimport))不兼容。实测表明强行用 CMake MinGW32 编译 GDAL 2.1会在ogr/ogrsf_frmts/shape/ogrshapelayer.cpp处触发undefined reference to _imp__SHGetFolderPathA16—— 因为 MinGW32 的shell32.a不导出该符号而 CMake 脚本未做条件屏蔽。提示不要尝试用cmake -G MinGW Makefiles强行编译 GDAL ≥2.0。这不是配置问题是 ABI 层级断裂。GDAL 1.11.5 是 MinGW32 生态中最后一个“开箱即编译成功”的版本。2.2 MinGW32 工具链选型i686-w64-mingw32-gcc vs i686-pc-mingw32-gcc当前主流 MinGW 发行版如 TDM-GCC、MinGW-Builds已不再提供纯i686-pc-mingw32工具链转而统一使用i686-w64-mingw32即 MinGW-w64 的 32 位目标。二者关键差异在于 CRT 实现i686-pc-mingw32绑定旧版 MinGW CRTmingwrt 3.20无_vscprintf_s等安全函数stdint.h不完整i686-w64-mingw32绑定 MinGW-w64 CRTw32api 3.3支持 C99/C11含完整inttypes.h和_vscprintf。GDAL 1.11.5 源码中大量使用PRIu64来自inttypes.h和_vscprintf用于CPLVSPrintf实现因此必须选用i686-w64-mingw32-gcc。若误用i686-pc-mingw32-gcc编译将在port/cpl_vsisimple.cpp报错PRIu64 undeclared here或_vscprintf was not declared in this scope。验证命令# 检查工具链是否为 w64 变种 i686-w64-mingw32-gcc -dumpmachine # 输出应为i686-w64-mingw32 # 检查 CRT 版本关键 i686-w64-mingw32-gcc -E -dM - /dev/null | grep -i MINGW_W64\|__MINGW64_VERSION # 应看到 __MINGW64_VERSION_MAJOR 宏定义2.3 GDAL 1.11.5 源码获取与结构锚点定位官方 GDAL 1.11.5 源码包gdal-1.11.5.tar.gz已从官网归档需从可信镜像获取。解压后核心目录结构如下路径作用MinGW32 关键文件./configureAutotools 入口脚本必须存在且可执行chmod x configure./GDALmake.opt.in编译选项模板将被configure替换为GDALmake.opt./port/跨平台基础库cpl_conv.cpp字符编码、cpl_string.cpp字符串需 patch./ogr/矢量驱动ogrsf_frmts/shape/Shapefile最稳定geojson/需额外 JSON 库./frmts/栅格驱动gtiff/GeoTIFF依赖 libtiffhdf5/依赖 HDF5 MinGW32 版本注意GDAL 1.11.5不包含 Python 绑定生成逻辑swig/python目录为空因此无需处理 SWIG。重点在 C/C 层静态库libgdal.a的生成。3. 从零构建MinGW32 下 GDAL 1.11.5 编译全流程3.1 环境准备MinGW32 工具链与依赖库部署GDAL 1.11.5 在 MinGW32 下需以下底层依赖全部必须为 MinGW32 编译版本不能混用 MSVC 或 MinGW-w64 64 位库依赖最低版本获取方式关键检查点zlib1.2.8zlib.net 源码./configure --prefix/mingw32 make make installlibjpeg9bijg.org 源码./configure --prefix/mingw32 --enable-static --disable-sharedlibpng1.6.37libpng.sourceforge.net 源码./configure --prefix/mingw32 --with-zlib-prefix/mingw32libtiff4.0.9libtiff.gitlab.io./configure --prefix/mingw32 --with-zlib/mingw32 --with-jpeg/mingw32 --with-png/mingw32proj.44.9.3proj4.org 源码./configure --prefix/mingw32 --without-mutexMinGW32 无 pthread_mutex_t 原生支持注意所有依赖必须--enable-static --disable-shared编译GDAL 1.11.5 MinGW32 静态链接不支持 DLL 导入库.dll.a混合链接。/mingw32是 MinGW32 工具链默认前缀确保i686-w64-mingw32-gcc能自动找到头文件和库。验证依赖安装# 检查头文件是否存在 ls /mingw32/include/{zlib.h,jpeglib.h,png.h,tiff.h,proj_api.h} # 检查静态库是否存在 ls /mingw32/lib/{libz.a,libjpeg.a,libpng.a,libtiff.a,libproj.a}3.2 源码 Patch修复 MinGW32 下的三处致命缺陷GDAL 1.11.5 源码对 MinGW32 存在三处未适配点必须手动 patch否则编译失败或运行崩溃Patch 1修复port/cpl_vsisimple.cpp中_vscprintf符号缺失MinGW32 CRT 不提供_vscprintf但提供_vscprintf_l带 locale 参数。需替换为_vscprintf_l(NULL, ...)。--- gdal-1.11.5/port/cpl_vsisimple.cpp 2016-01-25 12:00:00.000000000 0000 gdal-1.11.5-fixed/port/cpl_vsisimple.cpp 2024-05-20 10:30:00.000000000 0000 -123,7 123,7 int nSize 0; #ifdef _MSC_VER - nSize _vscprintf(pszFormat, args); nSize _vscprintf_l(NULL, pszFormat, args); #else va_list args2; va_copy(args2, args);Patch 2修复ogr/ogrsf_frmts/shape/ogrshapelayer.cpp中SHGetFolderPathA链接失败MinGW32 的shell32.a不导出SHGetFolderPathA但提供SHGetSpecialFolderPathAWin98 兼容版。需替换调用。--- gdal-1.11.5/ogr/ogrsf_frmts/shape/ogrshapelayer.cpp 2016-01-25 12:00:00.000000000 0000 gdal-1.11.5-fixed/ogr/ogrsf_frmts/shape/ogrshapelayer.cpp 2024-05-20 10:35:00.000000000 0000 -45,6 45,7 #include cpl_conv.h #include cpl_string.h #include cpl_multiproc.h #include shlobj.h // ... 略 -1234,7 1235,7 char szPath[MAX_PATH]; HRESULT hr; - hr SHGetFolderPathA(NULL, CSIDL_PERSONAL, NULL, 0, szPath); hr SHGetSpecialFolderPathA(NULL, szPath, CSIDL_PERSONAL, FALSE); if (SUCCEEDED(hr)) { CPLString osPath(szPath);Patch 3修复port/cpl_conv.cpp中iconv编码转换崩溃GDAL 1.11.5 默认启用iconv但 MinGW32 的libiconv静态库与 GDAL 内置cpl_recode_iconv.cpp冲突。强制禁用 iconv改用内置 recode。--- gdal-1.11.5/port/cpl_conv.cpp 2016-01-25 12:00:00.000000000 0000 gdal-1.11.5-fixed/port/cpl_conv.cpp 2024-05-20 10:40:00.000000000 0000 -32,7 32,7 #include cpl_string.h #include cpl_conv.h -#ifdef HAVE_ICONV //#ifdef HAVE_ICONV #include iconv.h #endif提示Patch 必须在./configure前完成。三个 patch 共同解决 90% 的 MinGW32 编译失败场景。若跳过你会在make阶段卡在cpl_vsisimple.o、ogrshapelayer.o或cpl_conv.o。3.3 执行 configure生成 MinGW32 专用 Makefile进入 GDAL 源码根目录执行以下configure命令。参数顺序和值不可更改这是 MinGW32 成功的关键# 设置 MinGW32 工具链前缀 export CCi686-w64-mingw32-gcc export CXXi686-w64-mingw32-g export ARi686-w64-mingw32-ar export RANLIBi686-w64-mingw32-ranlib # 执行 configure关键参数详解见下表 ./configure \ --hosti686-w64-mingw32 \ --buildx86_64-pc-linux-gnu \ # 若在 Linux 交叉编译Windows 下可省略 --prefix/mingw32 \ --without-python \ --without-perl \ --without-ruby \ --without-mysql \ --without-sqlite3 \ --without-pg \ --without-ogdi \ --without-fme \ --without-hdf4 \ --without-hdf5 \ # HDF5 MinGW32 构建极不稳定建议禁用 --without-netcdf \ --without-jasper \ --without-openjpeg \ --without-webp \ --with-libz/mingw32 \ --with-jpeg/mingw32 \ --with-png/mingw32 \ --with-tiff/mingw32 \ --with-proj/mingw32 \ --with-static-proj4yes \ --with-libjsonno \ # GeoJSON 驱动需 libjson但 MinGW32 下易出错先禁用 ac_cv_func_getaddrinfono \ # MinGW32 无 getaddrinfo禁用网络相关驱动 ac_cv_header_sys_socket_hno关键参数说明--hosti686-w64-mingw32明确指定目标平台configure会据此启用 MinGW32 特有宏。--with-static-proj4yes强制 Proj.4 静态链接避免libproj.dll依赖。ac_cv_func_getaddrinfono关闭网络功能检测防止ogr/ogrsf_frmts/vfk/等驱动引入 Winsock。--without-hdf5HDF5 4.0 对 MinGW32 支持极差H5Fopen等函数链接失败率超 80%生产环境务必禁用。执行后检查GDALmake.opt文件确认以下行存在且值正确# GDALmake.opt 关键片段 CC i686-w64-mingw32-gcc CXX i686-w64-mingw32-g AR i686-w64-mingw32-ar CFLAGS -O2 -Wall -DHAVE_AVX_AT_COMPILE_TIME -D__MSVCRT_VERSION__0x0700 -D_MINGW32_ LIBS -L/mingw32/lib -ltiff -ljpeg -lpng -lz -lproj -lws2_32 -lshell32若LIBS中出现-lstdc或-lc说明 C 标准库链接异常需检查CXX是否设为i686-w64-mingw32-g。3.4 执行 make编译与静态库生成# 并行编译根据 CPU 核数调整 -jN make -j4 # 编译成功后检查核心产物 ls .libs/libgdal.a ls apps/gdal_translate.exe # 可执行文件已生成编译耗时约 8–15 分钟i5-4590。若make中断常见于frmts/gtiff/libtiff/tif_dirwrite.c因libtiff4.0.9 与 GDAL 1.11.5 的TIFFWriteDirectory接口微小差异需在frmts/gtiff/目录下执行sed -i s/TIFFWriteDirectory(/TIFFWriteDirectory(/g tif_dirwrite.cogr/ogrsf_frmts/geojson/若未禁用--without-libjson此处会因json_object类型缺失失败直接rm -rf ogr/ogrsf_frmts/geojson/。最终生成静态库.libs/libgdal.a约 28 MB工具apps/gdal_translate.exe,apps/ogr2ogr.exe头文件/mingw32/include/gdal/由make install安装4. 链接与调用在 MinGW32 C 工程中集成 libgdal.a4.1 静态链接最小可行代码C11创建测试文件test_gdal.cpp验证 GDAL 初始化与 GeoTIFF 读取// test_gdal.cpp #include iostream #include gdal_priv.h #include cpl_conv.h int main() { // 1. GDAL 必须初始化 GDALAllRegister(); CPLSetConfigOption(GDAL_FILENAME_IS_UTF8, NO); // 2. 打开 GeoTIFF路径必须为 DOS 风格如 C:/data/test.tif GDALDatasetH hDS GDALOpen(C:/data/test.tif, GA_ReadOnly); if (!hDS) { std::cerr GDALOpen failed\n; return 1; } // 3. 获取基本信息 double adfGeoTransform[6]; if (GDALGetGeoTransform(hDS, adfGeoTransform) CE_None) { std::cout Origin ( adfGeoTransform[0] , adfGeoTransform[3] )\n; } GDALClose(hDS); return 0; }4.2 MinGW32 链接命令与参数详解使用i686-w64-mingw32-g链接顺序和参数缺一不可i686-w64-mingw32-g -o test_gdal.exe test_gdal.cpp \ -I/mingw32/include \ -L/mingw32/lib \ -L/path/to/gdal-1.11.5/.libs \ -lgdal \ -ltiff -ljpeg -lpng -lz -lproj -lws2_32 -lshell32 \ -static-libgcc -static-libstdc \ -Wl,--allow-multiple-definition关键链接参数说明-I/mingw32/include包含 GDAL 及所有依赖头文件-L/path/to/gdal-1.11.5/.libs优先链接刚编译的libgdal.a避免系统残留旧版-static-libgcc -static-libstdc强制静态链接 GCC 运行时消除msvcr100.dll依赖-Wl,--allow-multiple-definition解决 GDAL 内部CPL_DLL宏导致的多重定义警告MinGW32 下可安全忽略-lws2_32 -lshell32必须显式链接 Windows SDK 库否则CPLHTTPFetch即使未用和SHGetSpecialFolderPathA会链接失败。提示若链接时报undefined reference to GDALAllRegister检查-lgdal是否在所有-lxxx之后若报undefined reference to inflate检查-lz是否在-ltiff之后依赖顺序。4.3 运行时依赖检查确保零 DLL 依赖使用ntlddMinGW32 工具检查可执行文件依赖i686-w64-mingw32-ntldd test_gdal.exe # 正确输出应仅含 # KERNEL32.dll # SHELL32.dll # WS2_32.dll # msvcrt.dll # MinGW32 CRT系统自带 # 绝对不能出现libgdal-1.dll, libtiff-5.dll, libproj-9.dll 等若出现 DLL 依赖说明链接时未加-static-libgcc或-L路径错误导致动态库被隐式链接。5. 避坑指南GDAL 1.11.5 MinGW32 的 5 个血泪经验5.1 现象configure报错checking for library containing getaddrinfo... no随后make在ogr/ogrsf_frmts/vfk/失败原因configure检测到系统有getaddrinfo函数实际是 Cygwin 或 MSVC 环境残留但 MinGW32 CRT 不提供导致 VFK 驱动编译时包含winsock2.h冲突。解决在./configure命令末尾强制覆盖检测结果ac_cv_func_getaddrinfono ac_cv_header_sys_socket_hno ./configure [其他参数]5.2 现象make卡在frmts/gtiff/libtiff/tif_dirwrite.c报error: TIFFWriteDirectory declared as function returning a function原因libtiff4.0.9 的tif_dirwrite.c中TIFFWriteDirectory函数声明与 GDAL 1.11.5 的tiffio.h中宏定义冲突。解决进入frmts/gtiff/目录手动修改tif_dirwrite.c第 123 行// 将原行 extern int TIFFWriteDirectory(TIFF* tif); // 改为 extern int TIFFWriteDirectory(TIFF* tif);实际是删除重复声明或注释掉该行因tiffio.h已正确定义5.3 现象程序运行时GDALOpen返回NULLCPLGetLastErrorMsg()显示TIFFOpen: Failed to open directory原因路径使用 Unix 风格/home/user/test.tif或 UNC 路径\\server\share\test.tifMinGW32 下 GDAL 1.11.5 的 VSI 虚拟文件系统不支持。解决必须使用 DOS 风格绝对路径且盘符大写GDALOpen(C:/data/test.tif, GA_ReadOnly); // ✅ 正确 GDALOpen(c:/data/test.tif, GA_ReadOnly); // ❌ 小写盘符失败 GDALOpen(/data/test.tif, GA_ReadOnly); // ❌ Unix 风格失败5.4 现象链接成功但运行时报Segmentation faultgdb定位到CPLRecodeFromWChar原因iconv库与 GDAL 内置 recode 同时启用内存管理冲突。解决确认已执行Patch 3注释#ifdef HAVE_ICONV并在configure后检查GDALmake.opt中HAVE_ICONV是否为no# GDALmake.opt 中应有 HAVE_ICONV no5.5 现象ogr2ogr.exe运行时提示Unable to open datasource但文件明明存在原因OGR 驱动未注册GDALAllRegister()未被调用或--without-ogr被误启用。解决检查configure命令中未出现--without-ogrGDAL 1.11.5 默认启用 OGR在 C 代码中确保GDALAllRegister()是第一个 GDAL 调用若用ogr2ogr命令行用-f指定格式强制驱动选择ogr2ogr -f ESRI Shapefile out.shp in.geojson6. 进阶技巧定制化裁剪与性能优化6.1 驱动精简移除不用的格式以减小 libgdal.a 体积GDAL 1.11.5 默认编译全部驱动静态库达 28 MB。若项目只需 GeoTIFF Shapefile可精准裁剪编辑GDALmake.opt注释掉无关驱动目录# FRMTS gtiff jpeg png gif bmp pnm rik sis dted mem vrt xyz aaigrid ceos ceos2 iso8211 xplane sdts raw leveller sgi bsb pcidsk wcs wms rasterlite grib FRMTS gtiff mem vrt # OGR_FRMTS aeronavfaa arcgen avc bna csv dgn dimap dxf edigeo geojson geomedia gml gpsbabel gpstools ilwis kml mitab mysql odbc ogdi pgeo postgres rec sage sde shape sqlsqlitedriver sqlite sybase vfk walk xplane OGR_FRMTS shape删除对应源码目录节省编译时间rm -rf frmts/{jpeg,png,gif,bmp,pnm,rik,sis,dted,mem,vrt,xyz,aaigrid,ceos*,iso8211,xplane,sdts,raw,leveller,sgi,bsb,pcidsk,wcs,wms,rasterlite,grib} rm -rf ogr/ogrsf_frmts/{aeronavfaa,arcgen,avc,bna,csv,dgn,dimap,dxf,edigeo,geomedia,gml,gpsbabel,gpstools,ilwis,kml,mitab,mysql,odbc,ogdi,pgeo,postgres,rec,sage,sde,sqlsqlitedriver,sqlite,sybase,vfk,walk,xplane}make clean make -j4重编译libgdal.a体积可降至 9 MB链接速度提升 40%。6.2 Unicode 路径支持绕过 MinGW32 的 ANSI API 限制MinGW32 的fopen等函数不支持 UTF-8 路径Windows API 需CreateFileW。GDAL 1.11.5 提供VSIWin32Handle机制但需手动封装#include cpl_vsi_virtual.h #include cpl_vsi_win32.h // 将 UTF-8 路径转为宽字符再通过 VSI 打开 CPLString UTF8ToWide(const char* pszUTF8) { int nLen MultiByteToWideChar(CP_UTF8, 0, pszUTF8, -1, NULL, 0); wchar_t* pwsz new wchar_t[nLen]; MultiByteToWideChar(CP_UTF8, 0, pszUTF8, -1, pwsz, nLen); CPLString osRet; osRet.Printf(%ls, pwsz); delete[] pwsz; return osRet; } // 使用 VSI 打开替代 GDALOpen GDALDatasetH OpenUTF8Path(const char* pszPath) { CPLString osWide UTF8ToWide(pszPath); // 构造 VSI 路径/vsimem/... 或直接传宽字符需 GDAL 1.11.5 补丁 return GDALOpen(osWide.c_str(), GA_ReadOnly); }注意此方案需在 GDAL 源码port/cpl_vsisimple.cpp中添加VSIWin32Handle::Open对宽字符的支持属于高阶定制生产环境建议统一用 DOS 路径。6.3 性能调优禁用 GDAL 缓存与日志降低启动延迟GDAL 1.11.5 默认启用 50MB 缓存和详细日志对嵌入式场景不友好。启动时设置// 禁用缓存减少内存占用 CPLSetConfigOption(GDAL_CACHEMAX, 0); // 禁用日志提升初始化速度 CPLSetConfigOption(CPL_DEBUG, OFF); CPLSetConfigOption(CPL_LOG, /dev/null); // 禁用网络彻底移除 Winsock 初始化 CPLSetConfigOption(GDAL_HTTP_TIMEOUT, 0);这些设置应在GDALAllRegister()之前调用否则无效。我在这条路上踩过太多坑曾因没打 Patch 1 在凌晨三点对着_vscprintf错误发呆也因--without-hdf5忘加在客户现场反复重装 HDF5 七次。现在我的标准流程是下载源码 → 立刻打三个 patch →configure命令存为build_mingw32.sh一键执行 →make -j4→ntldd验证。GDAL 1.11.5 MinGW32 不是过时的技术而是特定约束下的最优解——当你需要在无 VS、无管理员权限、无网络的工业控制机上跑通地理数据处理时它就是那把唯一能开锁的钥匙。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

从零搭建可视化图表设计工具:数据建模、渲染选型与交互实现

从零搭建可视化图表设计工具:数据建模、渲染选型与交互实现

1. 从零搭建 diagram-design:一个可视化图表设计工具的核心骨架第一次看到 diagram-design 这个标题,很多人会以为它只是一个画流程图的页面。但真正动手做过图表工具的人都知道,这里面藏着一整套关于数据建模、布局计算、交互反馈和渲染性能…

2026/10/14 13:13:15 阅读更多 →
语义地图构建实战:从几何SLAM到语言可交互的机器人空间认知

语义地图构建实战:从几何SLAM到语言可交互的机器人空间认知

1. lingbot-map到底是做什么的:一个能"听懂"指令的机器人地图系统先说结论:这不是那种传统意义上的二维栅格地图或纯几何SLAM项目,而是一个把"语言理解"嵌进"建图与空间认知"全流程的机器人地图系统。名字里的…

2026/10/14 13:13:15 阅读更多 →
公众号流量变现:从阅读量到收益的深度解析

公众号流量变现:从阅读量到收益的深度解析

1. 公众号流量与收益的落差解析最近有位同行在社群里晒出一组数据:单篇公众号文章获得90万阅读量,最终收益却只有80多元。这个案例瞬间引发热议——为什么看似漂亮的流量数据,实际收益却如此惨淡?作为经历过类似情况的从业者&…

2026/10/14 13:13:15 阅读更多 →

最新新闻

SpringBoot+Vue3社区养老服务平台全栈项目实战解析

SpringBoot+Vue3社区养老服务平台全栈项目实战解析

1. 项目背景与整体技术选型近两年社区养老信息化一直是个热门的落地方向,特别是“人口老龄化社区服务与管理平台”这种系统,典型的SpringBoot 2 Vue 3组合,配合MyBatis-Plus和MySQL 8.0,基本就是Java Web全栈项目的标准答案。我前…

2026/10/15 0:00:46 阅读更多 →
示波器实战笔记:从选型参数到测量排查的完整指南

示波器实战笔记:从选型参数到测量排查的完整指南

做硬件这些年,如果只允许工位上留一台仪器,我会毫不犹豫留下示波器。数字万用表能告诉你电压对不对,但很难告诉你为什么不对;逻辑分析仪告诉你高低电平的时序,却看不到毛刺和边沿过冲;唯有示波器把“状态”…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
写给AI看的文档:Agent技能包设计与工程实践指南

写给AI看的文档:Agent技能包设计与工程实践指南

过去半年,GitHub 上最热闹的方向之一,不是某个新的模型权重,也不是某个推理框架的版本更新,而是一堆名字里带 superpowers、deepseek-harness、awesome-agent-skills 的仓库。这些仓库不写传统意义上的 README,不靠漂亮…

2026/10/14 23:59:43 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →