声学工具箱windows系统编译

7 阅读7分钟

# 声学工具箱(Acoustics Toolbox)Windows系统编译文档

1. 前言

1.1 文档目的

本文档旨在指导用户在Windows系统上编译声学工具箱(Acoustics Toolbox),包括环境搭建、编译配置、执行步骤以及常见问题的解决方案。

1.2 声学工具箱简介

声学工具箱是一套用于海洋声学研究的专业软件,包含多个模块:

  • Bellhop:射线追踪模型
  • Kraken:简正波模型
  • KrakenField:声场计算
  • Scooter:快速声场计算
  • misc:辅助工具
  • tslib:时间序列库

1.3 编译环境要求

  • Windows 7/8/10/11 操作系统
  • MinGW(Minimalist GNU for Windows)编译器套件
  • 至少2GB内存
  • 至少1GB可用磁盘空间

2. 环境准备

2.1 操作系统要求

  • Windows 7 及以上版本
  • 64位系统(推荐)

2.2 硬件要求

  • CPU:至少双核处理器
  • 内存:至少2GB
  • 磁盘空间:至少1GB可用空间

2.3 磁盘空间需求

  • MinGW安装:约500MB
  • 源代码:约200MB
  • 编译输出:约100MB
  • 总计:约800MB

3. MinGW环境安装

3.1 下载MinGW安装管理器

  1. 访问 MinGW官网
  2. 点击 "Downloads" 链接
  3. 下载 "mingw-get-setup.exe"

3.2 安装必要的组件

  1. 运行 "mingw-get-setup.exe"
  2. 选择安装目录(建议默认路径 C:\MinGW
  3. 点击 "Continue" 完成基本安装
  4. 运行 "MinGW Installation Manager"
  5. 在左侧列表中选择以下组件:
    • mingw32-base(基础GCC工具链)
    • mingw32-gcc-fortran(Fortran编译器)
    • mingw32-make(GNU Make工具)
  6. 点击 "Installation" -> "Apply Changes" 进行安装

3.3 配置环境变量

  1. 右键点击 "此电脑" -> "属性" -> "高级系统设置" -> "环境变量"
  2. 在 "系统变量" 中找到 "Path" 变量,点击 "编辑"
  3. 点击 "新建",添加路径 C:\MinGW\bin(如果安装在其他位置,请使用实际路径)
  4. 点击 "确定" 保存更改

3.4 验证安装

  1. 关闭所有命令提示符窗口
  2. 重新打开命令提示符
  3. 运行以下命令检查安装是否成功:
    • gcc --version(检查GCC版本)
    • gfortran --version(检查Fortran编译器版本)
    • mingw32-make --version(检查Make工具版本)

3.5 重命名

重要:为了方便使用make,将mingw32-make.exe重命名为make.exe。

4. 项目准备

4.1 获取声学工具箱源代码

  1. 获取声学工具箱源代码

官网上获取的代码可能编译不通过,推荐使用整编后的代码 OpenOcean/AcousticToolboxWinCompile

  1. 解压到本地目录,例如 e:\4.0Dr\2026-04\at-win-cp\atWin10_2020_11_4

4.2 创建bin目录

在项目根目录创建bin目录,用于存放编译后的可执行文件:

mkdir bin

4.3 目录结构说明

项目目录结构如下:

  • misc/:辅助工具
  • tslib/:时间序列库
  • Bellhop/:射线追踪模型
  • Kraken/:简正波模型
  • KrakenField/:声场计算
  • Scooter/:快速声场计算
  • Krakel/:需要LAPACK库的模块(默认注释)
  • bin/:编译输出目录
  • Makefile:主Makefile

5. Makefile配置

5.1 主Makefile配置

5.1.1 选择编译器(gfortran)
  1. 打开 Makefile 文件
  2. 确保以下行未被注释:
     export FC=gfortran
    
  3. 确保其他编译器(如ifort)的配置被注释
5.1.2 设置编译选项
  1. 选择合适的编译选项,对于Windows系统,推荐使用:
     export FFLAGS= -march=native -Bstatic -Waliasing -Wampersand -Wsurprising -Wintrinsics-std -Wno-tabs -Wintrinsic-shadow -Wline-truncation -std=gnu -O2 -ffast-math -funroll-all-loops -fomit-frame-pointer -mtune=native
    
  2. 注意:Windows系统下 -O2 是推荐的优化级别,-O3 可能会导致问题
5.1.3 Windows兼容性格式修改
  1. 将Unix风格的命令格式改为Windows兼容格式:
    • (cd misc; make -k all) 改为 cd misc && make -k all
    • find . -name '*.mod' -exec rm -r {} + 改为 del /s /q *.mod

5.2 子目录Makefile配置

5.2.1 misc目录
  • 检查并修改 misc/Makefile,确保编译选项正确
  • 确保输出路径指向 ../bin 目录
5.2.2 tslib目录
  • 检查并修改 tslib/Makefile,确保编译选项正确
  • 确保输出路径指向 ../bin 目录
5.2.3 Bellhop目录
  • 检查并修改 Bellhop/Makefile,确保编译选项正确
  • 将Unix风格的 for 循环改为Windows兼容格式:
    install: all
        @echo "Bellhop built"
        @echo "*************"
        @echo " "
        @echo "----- Installing bellhop.exe"
        @copy bellhop.exe ..\bin
        @echo "----- Installing bellhop3d.exe"
        @copy bellhop3d.exe ..\bin
    
5.2.4 Kraken目录
  • 检查并修改 Kraken/Makefile,确保编译选项正确
  • 确保输出路径指向 ../bin 目录
5.2.5 KrakenField目录
  • 检查并修改 KrakenField/Makefile,确保编译选项正确
  • 确保输出路径指向 ../bin 目录
5.2.6 Scooter目录
  • 检查并修改 Scooter/Makefile,确保编译选项正确
  • 确保输出路径指向 ../bin 目录

6. 编译步骤

6.1 清理之前的编译文件

  1. 打开命令提示符,导航到项目目录:
    cd e:\4.0Dr\2026-04\at-win-cp\atWin10_2020_11_4
    
  2. 执行清理命令:
    make clean
    

6.2 执行编译

  1. 运行编译命令:
    make
    
  2. 等待编译完成,观察是否有错误信息

6.3 安装到bin目录

  1. 执行安装命令:
    make install
    
  2. 检查bin目录是否生成了可执行文件

7. 常见问题与解决方案

7.1 "make不是内部或外部命令"错误

  • 问题原因:MinGW未安装或环境变量未配置
  • 解决方案
    1. 安装MinGW并确保选择了 mingw32-make 组件
    2. C:\MinGW\bin 添加到系统环境变量PATH
    3. 关闭并重新打开命令提示符

7.2 "mingw32-make命令格式错误"错误

  • 问题原因:Makefile中使用了Unix风格的命令格式
  • 解决方案
    1. (cd misc; make -k all) 改为 cd misc && make -k all
    2. 确保所有命令使用Windows兼容格式

7.3 "Modula-2 compiler not installed"错误

  • 问题原因:gfortran误解了 *.mod 通配符,以为是Modula-2源文件
  • 解决方案
    1. 检查Makefile中的通配符使用方式
    2. 确保编译命令格式正确,避免直接将 *.mod 作为gfortran的参数

7.4 "for循环语法错误"错误

  • 问题原因:在Makefile中使用了Windows命令提示符的 for 循环语法
  • 解决方案
    1. 在Makefile中,将 %f 改为 %%f(因为 % 在Makefile中是特殊字符)
    2. 例如:for /r . %%f in (*.exe) do copy "%%f" bin

7.5 编译选项问题

7.5.1 -O3优化级别问题
  • 问题原因:Windows系统下 -O3 优化级别可能导致编译错误
  • 解决方案:使用 -O2 优化级别
7.5.2 静态链接问题
  • 问题原因:动态链接库依赖问题
  • 解决方案:使用 -Bstatic 选项进行静态链接

8. 验证编译结果

8.1 检查bin目录内容

  1. 列出bin目录中的文件:
    dir bin
    
  2. 确认生成了以下可执行文件:
    • bellhop.exe
    • bellhop3d.exe
    • kraken.exe
    • krakenc.exe
    • field.exe
    • field3d.exe
    • scooter.exe

8.2 验证可执行文件

  1. 尝试运行其中一个可执行文件:
    bin\bellhop.exe
    
  2. 检查是否正常启动,无错误信息

8.3 运行测试程序

  1. 查看项目中的测试目录:
    dir tests
    
  2. 运行测试程序验证编译结果

9. 编译选项详解

9.1 编译器选项

  • -march=native:使用本地CPU架构优化
  • -Bstatic:使用静态链接
  • -Wall:显示所有警告
  • -std=gnu:使用GNU标准

9.2 优化级别

  • -O0:无优化
  • -O1:基本优化
  • -O2:推荐优化级别(Windows系统)
  • -O3:最高优化级别(可能在Windows上有问题)

9.3 架构特定选项

  • -msse3:启用SSE3指令集
  • -mtune=native:针对本地CPU进行调优

10. 附录

10.1 命令参考

命令描述
make clean清理编译文件
make编译项目
make install安装到bin目录
gfortran --version检查gfortran版本
mingw32-make --version检查make版本

10.2 相关资源链接

10.3 联系方式

  • 如有编译问题,请参考官方文档或社区论坛
  • 可以在GitHub上提交issue或PR

本文档基于Windows 10系统测试,其他Windows版本可能需要适当调整。