当前位置: 首页 > news >正文

[4A/OP]

2.2 安装程序

2.2.1 解压缩.tar.gz文件

调用UNIX命令tar会在当前目录下创建4A/OP子例程主目录4AOP-1.5/,包括所有必要的子目录。只需键入以下命令即可解压缩和“untar”4AOP-1.5.tar.gz:

tar -xzvf 4AOP-1.5.tar.gz

4AOP-1.5/目录现在应该已经创建,并且应该包含以下文件和子目录:README、VERSION以及目录DDC、model/、gui/和test。

2.2.2.生成文件

如上一章所述,支持以下编译器:

  • C编译器
    • GNU gcc(4.4.7或4.9.3)
    • Intel icc
  • Fortran编译器
    • GNU gfortran(4.4.7或4.9.3)
    • Intel ifort(12.1.3)

根据您要用于构建4A/OP的编译器,您需要将正确的编译参数设置到编译过程中使用的生成文件中。

srclib子目录中提供了一些生成文件的示例(生成文件.4a{IDCOMPIL}.inc文件,其中{IDCOMPIL}是编译的配置标识符)。

下面是一个使用gcc和gfortran的简单makefile示例:

# Makefile.4a 
# GNU 
CC     = gcc 
FC     = gfortran 
SHELL  = /bin/ksh 
RANLIB = ranlib 
AR = ar 
INCLUDES = -I $(RDIR_S_MOD) -J $(RDIR_S_MOD) 
CFLAGS   
= -DSWAPIO -O3 -mieee-fp -ffloat-store -march=native  
FFLAGS   
= -O3 -fconvert=big-endian -mcmodel=large -cpp -ffloat-store -mieee-fp -march=native 
LDFLAGS  = -O3 -fconvert=big-endian -mcmodel=large -cpp -ffloat-store -mieee-fp -march=native -Wl -lnetcdf -lnetcdff

gcc版本9.4.0
gfortran版本9.4.0
直接使用Makefile.4a.gfortran.inc

LDFLAGS += -L/opt/netcdf/lib -lnetcdf -lnetcdff

2.2.3. 安装

2.2.3.1. 编译程序

对于编译,有必要准备编译配置,这取决于将使用的编译器。在目录模型的子目录srclib中,在文件Makefile.4a{IDCOMPIL}.inc中有一些配置定义的示例,其中{IDCOMPIL}是编译的配置标识符。用户必须编辑这样的配置文件,使配置适应其自己的计算环境,并保存此配置。要提供的信息是fortran和C编译器路径及其选项(CC、FC、CFLAGS、FFLAGS和LDFLAGS)。

编译的工作目录是srclib/。

因此,编译命令如下:

make all IDCOMPIL={your own parameters} 

编译生成库、目标文件和可执行文件。这些编译输出放置在library/lib$IDCOMPIL目录以及子目录libexe(可执行文件)、libobj(对象)、libmod(模块)和lib(库)中。子目录库/lib$IDCOMPIL/libexe/应包含可执行文件mainaaaa、atmformat、aerformat、lirespc4a、calcStat、calcStaJ、ifctgauss、spjac和statanalyst。

编译还创建了用于存储4A模拟和ISRF准备结果的目录:outputbin$IDCOMPIL、outputascii$IDCOMPIL和ISRF$IDCOMPIL。

示例:用户可以使用发行版附带的配置文件进行编译:IDCOMPIL=.gfortran,如下所示:

make all IDCOMPIL=.gfortran 

出现错误:-bash: make: command not found
原因分析:一般出现这个-bash: make: command not found提示,是因为安装系统的时候使用的是最小化mini安装,系统没有安装make、vim等常用命令,直接sudo apt-get install安装下即可。
解决方法:

sudo apt-get install ksh
sudo apt-get update
sudo apt-get install  gcc automake autoconf libtool make

在 Linux 系统中,sudo install 的行为取决于你指定的目标路径(DESTDIR 或安装目录)。它不会自动安装到所有目录,而是按照你给定的参数进行安装。

1. sudo install 的典型用法

sudo install -m 755 source_file /usr/local/bin/target_file
  • 这个命令会将 source_file 安装到 /usr/local/bin/target_file,并设置权限为 755(可执行)。
  • 它只影响指定的目标路径,不会影响其他目录。

2. make install 通常如何工作?

如果你运行的是 sudo make install,它的行为取决于 Makefile 里的 install 规则。例如:

install:install -m 755 my_program /usr/local/bin/
  • 这个 install 目标会将 my_program 复制到 /usr/local/bin/不会影响其他目录

3. DESTDIR 变量(用于 staged installs)

有些 Makefile 支持 DESTDIR,允许临时安装到某个目录(如打包时使用):

sudo make install DESTDIR=/tmp/pkg
  • 这样文件会安装到 /tmp/pkg/usr/local/bin/ 而不是直接安装到 /usr/local/bin/
  • 仍然不会影响所有目录,只是更改了安装前缀。

4. sudo make install 会安装到哪里?

  • 默认情况下,make install 通常安装到:
    • /usr/local/bin/(可执行文件)
    • /usr/local/lib/(库文件)
    • /usr/local/include/(头文件)
    • /usr/local/share/(数据文件)
  • 不会自动安装到所有目录,而是按照 Makefileconfigure 脚本的配置进行安装。

5. 如何查看 make install 会安装哪些文件?

  • 可以运行 make -n install(模拟执行但不真正安装),查看它会复制哪些文件到哪些路径:
    make -n install
    
  • 或者检查 Makefile 里的 install 规则。

总结

  • sudo installsudo make install 不会安装到所有目录,而是按照给定的目标路径或 Makefile 规则安装。
  • 如果你担心它会污染系统,可以:
    • 使用 DESTDIR 测试安装位置。
    • make -n install 查看它会修改哪些文件。
    • 考虑使用 stowcheckinstall 进行更可控的安装。

如果你遇到某个软件安装到了意外的地方,可能是它的 Makefile 配置问题,可以检查它的安装规则。

相关文章:

  • 【HTTP通信:生活中的邮局之旅】
  • 带根线就无敌?光纤无人机如何成为电子战的终结者
  • 植物合成生物学:上帝之手,万物皆可合
  • 基于javaweb的SSM+Maven红酒朔源管理系统设计与实现(源码+文档+部署讲解)
  • 10.ArkUI Grid的介绍和使用
  • 数据归一化
  • LeetCode 每日一题 2845. 统计趣味子数组的数目
  • WEB漏洞-XSS跨站原理分类
  • AI与思维模型【77】——PDCA思维模型
  • uniapp-商城-37-shop 购物车 选好了 进行订单确认3 支付栏
  • Mysql分页查询limit
  • 分布式ID生成方案详解
  • libconfig 写文件
  • 配置 RDP 远程桌面协议连接ubuntu服务器桌面
  • Redis是单线程的,如何提高多核CPU的利用率?
  • 大模型在直肠癌预测及治疗方案制定中的应用研究
  • Web4.0身份革命:去中心化身份系统的全栈实现路径
  • 开环增益?闭环增益?
  • 本土网盟推广孟加拉slot游戏出海营销优势
  • FWFT_FIFO和Standard_FIFO对比仿真
  • 蜀道考古调查阶段性成果发布,新发现文物遗存297处
  • 龚正会见巴基斯坦卡拉奇市市长穆尔塔扎·瓦哈卜、巴西圣保罗市市长里卡多·努内斯
  • 董明珠的接班人还是董明珠
  • 肖扬任武钢集团董事长、党委书记
  • 920余名在缅甸当阳等地实施跨境电信网络诈骗的中国籍犯罪嫌疑人被移交我方
  • 浦江观察|3.6亿元消费券,为上海餐饮业带来了什么?