当前位置: 首页 > 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://www.xdnf.cn/news/140455.html

相关文章:

  • 力扣-141.环形链表
  • 小白电路设计-设计11-恒功率充电电路设计
  • 【CUDA 编译 bug】ld: cannot find -lcudart
  • 代码随想录学习笔记---二叉树
  • Vue前端学习笔记
  • Redis高频面试题——String对象
  • Spring MVC 数据绑定利器:深入理解 @InitBinder
  • 【滑动窗口+哈希表/数组记录】Leetcode 3. 无重复字符的最长子串
  • 全球碳化硅晶片市场深度解析:技术迭代、产业重构与未来赛道争夺战(2025-2031)
  • FlinkJobmanager深度解析
  • Vue 3新手入门指南,从安装到基础语法
  • 基于 Python(selenium) 的百度新闻定向爬虫:根据输入的关键词在百度新闻上进行搜索,并爬取新闻详情页的内容
  • 海之淀攻略
  • 404了怎么办快把路由给我断掉(React配置路由)
  • Zeppelin在spark环境导出dataframe
  • 【Linux庖丁解牛】—进程优先级!
  • C++入门小馆: 深入了解STLlist
  • sql server 开启cdc报事务正在执行
  • Qt ModbusSlave多线程实践总结
  • macOS 更新后找不到钥匙串访问工具的解决方案
  • 手机打电话时电脑坐席同时收听对方说话并插入IVR预录声音片段
  • 使用Python脚本在Mac上彻底清除Chrome浏览历史:开发实战与隐私保护指南
  • 【2025最新面试操作系统八股】CPU利用率和load(负载)的区别,CPU利用率怎么算。
  • 边界凸台建模与实例
  • 电子学会—青少年软件编程 python一级等级考试真题—2025年03月
  • 时间复杂度分析
  • Linux学习笔记之环境变量
  • 住宅IP如何选择:长效VS短效,哪个更适合你的业务?
  • java排序算法-计数排序
  • OCR(Optical Character Recognition),光学字符识别