LAMMPS 源码构建磁盘空间节省指南:从浅克隆到构建产物清理的完整方案 科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载LAMMPS 是一个包含大量源文件、详尽文档和丰富示例的大型分子动力学软件项目。在磁盘配额受限的 HPC 集群用户账户、或空间紧张的开发环境中从源码构建 LAMMPS 的磁盘占用往往超出预期git 仓库的完整提交历史、编译生成的中间对象文件、调试符号与各类示例文件都会显著推高存储需求。本文基于 Build_diskspace.rst 官方文档结合仓库中 src/Makefile、cmake/CMakeLists.txt 等源码证据系统梳理从获取源码、编译配置到构建后清理的全链路磁盘优化手段帮助你在受限环境下完整构建并运行 LAMMPS。磁盘空间消耗从何而来在动手优化之前先明确 LAMMPS 源码树中空间的主要去向git 提交历史通过git clone拉取仓库时默认会一并下载自 2006 年 9 月以来约 3 万次提交数据截至 2021 年秋的完整提交历史其体量约占下载内容的一半编译产物编译过程会生成大量目标文件Obj_*目录与静态/共享库逐文件编译和链接后的中间产物体积可观文档与示例doc/约千余个 RST/HTML/PNG 文档文件与examples/涵盖 60 物理场景的输入文件在构建和运行 LAMMPS 时并非必需势函数文件potentials/中部分大体积文件合计约 120 MB仅在对应包package安装时才按需下载。理解了空间分布就可以按获取源码 → 编译配置 → 构建后清理三个阶段逐项压缩。一、获取源码用浅克隆压缩 git 历史最直接的空间节省来自浅克隆shallow clone即只拉取最近一次提交而非完整历史git clone gitgithub.com:lammps/lammps --depth1 --branchdevelop--depth1只保留最新一次提交下载量可减少约一半--branchdevelop指定克隆开发分支避免额外的分支历史代价是无法检出其他版本或分支。如果近期版本回溯是刚需可使用--depth1000以极小的额外空间换取最近约 1000 次提交对应的多个版本相比完整历史近 30,000 次提交仍然大幅瘦身。二、获取源码改用 tar 归档彻底绕开 git 历史如果完全不需要版本管理功能可直接从 LAMMPS 官网下载页或 GitHub Releases 页面下载tar 归档包。归档包完全不包含 git 历史解压即得一份干净的源码树是磁盘受限场景下最省空间的获取方式。注意归档包通常不携带 git 元信息因此后续无法使用git checkout切换版本也无法享受git pull增量更新需通过重新下载新归档来升级。三、编译配置去调试符号从源头压缩二进制LAMMPS 可执行文件与库的体积很大程度上来自调试符号。两种主流构建方式各有对应手段传统 make 构建详见 Build_make.rst移除机器 makefilesrc/MAKE/下编译标志中的-g或在调试不再需要时直接对可执行文件执行strip命令也可对 LAMMPS 共享库liblammps.so执行同样的操作静态库liblammps.a在链接完成、可执行文件就绪后可以整个删除。从 src/Makefile 可以看到传统构建的库命名约定静态库为liblammps_machine.a链接名liblammps.a共享库为liblammps_machine.so链接名liblammps.somake modeshared machine可显式构建共享库版本。按上述名称定位目标文件即可精准清理。CMake 构建详见 Build_cmake.rstcmake ../cmake -DCMAKE_BUILD_TYPERelease-DCMAKE_BUILD_TYPERelease启用编译优化并禁用调试信息注意仓库默认逻辑当未显式指定CMAKE_BUILD_TYPE时cmake/CMakeLists.txt 会默认回退到RelWithDebInfo带调试信息的优化构建其体积明显大于Release因此磁盘敏感环境务必显式声明Release若仍以 Python 模块方式调用 LAMMPSBUILD_SHARED_LIBS默认关闭见 cmake/CMakeLists.txt可按需开启并相应规划库文件的保留策略。四、构建后清理删除对象文件与中间产物将可执行文件如lmp_machine复制到长期存放位置后即可清理编译残留传统 make 构建make clean-machine # 删除单个机器配置对应的对象文件 make clean-all # 删除所有对象文件从 src/Makefile 的实现可以看到clean-all会rm -rf Obj_*并删除构建时自动生成的style_*.h、packages_*.h、lmpgitversion.h等派生文件clean-machine则精确删除Obj_machine与Obj_shared_machine目录。执行make help也可随时查看这些目标的说明见 src/Makefile。CMake 构建make clean # 在 build 目录内清理 # 或更彻底直接删除整个 build 目录CMake 将所有配置信息编译器选项、启用的包、安装路径等保存在独立的 build 目录中因此删除 build 目录不会污染源码树随时可用相同命令重建。五、删除非必需目录doc、examples 与按需势函数以下目录不参与构建和运行可安全删除doc/文档树源码 RST 与生成的 HTML/PNG 等只影响离线查阅examples/示例输入文件只作为学习素材potentials/中的部分大文件并非所有势函数都会用到。特别地约 120 MB 的最大几个势函数文件是按需下载的CMake 构建中 DOWNLOAD_POTENTIALS 选项默认开启构建对应包如 SNAP、ML-IAP 等时FetchPotentials函数见 cmake/Modules/LAMMPSUtils.cmake会基于potentials.txt清单校验并仅下载缺失的势函数文件。这意味着你可以放心删除当前未使用的大势文件构建时系统会按需自动补齐。包与源码树的组织关系详见 Build_package.rst各目录删除后如需重建完整环境重新克隆或解压归档即可。六、CMake 进阶技巧scratch 存储与单一源码树多配置当配额针对主目录home而非本地临时目录时CMake 提供了两个额外优势scratch 存储编译将 build 目录建在本地 scratch 文件系统上如/scratch/lammps-build编译产物不占用配额本地盘相比网络文件系统NFS 等还能加快对象文件生成与链接速度。单一源码树、多套配置与传统的 make 流程不同CMake 将所有配置状态存放在 build 目录中因此无需复制多份源码就能从同一份源码树生成多套互不干扰的构建例如一套 MPI KSPACE、一套串行最小集各自拥有独立的 build 目录与可执行文件。这也是在受限磁盘下同时维护多场景构建的推荐姿势。传统 make 构建下想要复现多配置则需维护src/MAKE下的多套 machine 文件并管理多个Obj_*目录空间效率明显更低。七、方案速查与组合建议阶段手段命令 / 配置空间收益获取源码浅克隆git clone ... --depth1 --branchdevelop下载量约减半获取源码tar 归档官网/GitHub Releases 下载完全无 git 历史编译配置去调试符号去掉-g或-DCMAKE_BUILD_TYPERelease二进制显著缩小构建后清理对象文件make clean-machine/make clean-all/ 删 build 目录释放全部中间产物构建后精简库文件strip liblammps.so删除liblammps.a释放静态库与符号构建后删除非必需目录doc/、examples/、未用势函数视内容而定势函数按需重下构建配置scratch 编译build 目录放到 scratch 文件系统不占配额且编译更快推荐组合磁盘极度紧张时采用tar 归档 CMAKE_BUILD_TYPERelease scratch 目录构建 构建后清理中间产物 删除doc//examples/的组合拳日常开发则可退化为浅克隆--depth1000RelWithDebInfo默认构建 make clean-machine按需清理在保留版本回溯能力的同时维持可接受的磁盘占用。需要说明的是上述大小比例浅克隆减半、势函数约 120 MB、历史约 30,000 次提交均以官方文档在 2021 年秋的表述为准实际数值会随仓库演进而变化优化策略本身则不依赖这些具体数字。构建前的完整环境准备可参考 Build_basics.rst 与 Build_settings.rst链接与安装细节见 Build_link.rstWindows 平台的特殊处理见 Build_windows.rst。赞分享科研科学计算高性能计算【免费下载链接】lammpsPublic development project of the LAMMPS MD software package项目地址https://gitcode.com/gh_mirrors/la/lammps点击查看免费下载相关推荐CMake磁盘空间优化终极指南构建产物清理与空间管理技巧CMake磁盘空间优化终极指南构建产物清理与空间管理技巧 CMake作为现代C项目的主流构建工具在开发过程中会产生大量的构建产物这些文件往往占用大量磁示例工程教程构建工具Valdi 磁盘空间清理实战Bazel 构建产物与模块缓存管理指南Valdi 磁盘空间清理实战Bazel 构建产物与模块缓存管理指南 Valdi 是基于 Bazel 的跨平台 UI 框架其构建系统会在本地持续产出大量中间产跨平台UI组件前端移动开发xmake构建缓存压缩节省磁盘空间的终极技巧xmake构建缓存压缩节省磁盘空间的终极技巧 在C项目开发中构建缓存是提高编译速度的重要工具但缓存文件会占用大量磁盘空间。xmake作为一款轻量级的跨开发工具构建工具CLI包管理器上一篇使用 Adafruit MCP9808 精密 I2C 温度传感器库从 Arduino 入门到 Tasmota 固件集成下一篇Angular CDK Listbox 完全指南基于 WAI-ARIA 模式构建可访问的自定义列表框创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考