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

[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 配置问题,可以检查它的安装规则。

相关文章:

[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.gz4AOP-1.5/目录现在应该已经创建&…...

来云台跑腿配送平台:用户体验至上的服务理念

来云台跑腿配送平台始终秉持用户体验至上的服务理念,从下单到收货的每一个环节,都致力于为用户提供优质、便捷的服务。​ 简洁的下单流程是良好体验的开端。用户通过 APP 或小程序,只需几步操作就能完成下单。清晰的服务分类、自动定位功能和…...

本地部署 Dify + Ollama 到 D盘,并挂载本地大模型 的完整教程,结合 Docker 运行环境

一、环境准备 1. 软件与硬件要求 • 操作系统:Windows 10/11 专业版(需开启 Hyper-V) • 硬件配置: • CPU ≥ 4核(推荐 Intel i5 及以上) • 内存 ≥ 16GB(大模型运行需预留 8GB 以上&#…...

文档构建:Sphinx全面使用指南 — 强化篇

文档构建:Sphinx全面使用指南 — 强化篇 Sphinx 是一款强大的文档生成工具,使用 reStructuredText 作为标记语言,通过扩展兼容 Markdown,支持 HTML、PDF、EPUB 等多种输出格式。它具备自动索引、代码高亮、跨语言支持等功能&#…...

深度理解C语言函数之strlen()的模拟实现

文章目录 前言一、strlen的模拟实现二、模拟实现代码及思路2.1 计数法2.2 指针相减法三、递归计数法 总结 前言 我写这篇文章的目的主要是帮助理解C语言中重要函数的用法,后面也会总结C相关的函数的模拟实现,这里的算法不一定是最好的,因为只…...

0基础 | Proteus仿真 | 51单片机 | 继电器

继电器---RELAY 本次选择一款5v一路继电器进行讲解 信号输入 IN1输入高电平,三极管导通,LED1点亮,电磁铁12接通吸引3向下与4接通,J1A的12接通 IN1输入低电平,则J1A的23接通 产品引脚定义及功能 序号 引脚符号 引脚…...

Python解析地址中省市区街道

Python解析地址中省市区街道 1、效果 输入:海珠区沙园街道西基村 输出: 2、导入库 pip install jionlp3、示例代码 import jionlp as jiotext 海珠区沙园街道西基村 res jio.parse_location(text, town_villageTrue) print(res)...

在vscode终端中运行npm命令报错

解决方案 这个错误信息表明,你的系统(可能是 Windows)阻止了 PowerShell 执行脚本,这是由于 PowerShell 的执行策略导致的。PowerShell 的执行策略控制着在系统上运行哪些 PowerShell 脚本。默认情况下,Windows 可能…...

提升变电站运维效率:安科瑞无线测温系统创新应用

一、引言 变电站作为电力系统的关键枢纽,承担着变换电压、分配电能以及控制电力流向等重要任务。在变电站的运行过程中,电气设备的接点温度监测至关重要。过热问题可能由多种因素引发,如电阻过大、接头质量欠佳、衔接不紧密、物理老化等&…...

vue3 使用 vite 管理多个项目,实现各子项目独立运行,独立打包

场景: 之前写过一篇 vite vue2 的配置,但是现在项目使用 vue3 较多,再更新一下 vue脚手架初始化之后的项目,每个项目都是独立的,导致项目多了之后,node依赖包过多,占用内存较多。想实现的效果…...

WebRTC服务器Coturn服务器用户管理和安全性

1、概述 Coturn服务器对用户管理和安全方面也做了很多的措施,以下会介绍到用户方面的设置 1.1、相关术语 1.1.1 realm 在 coturn 服务器中,域(realm)是一种逻辑上的分组概念,用于对不同的用户群体、应用或者服务进行区…...

如何使用极狐GitLab 的外部状态检查功能?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 外部状态检查 (ULTIMATE ALL) pending 状态引入于极狐GitLab 16.5 pending 状态检查的超时时间为两分钟引入于极狐GitLab 16…...

如何在 Element UI 中优雅地使用 `this.$loading` 显示和隐藏加载动画

如何在 Element UI 中优雅地使用 this.$loading 显示和隐藏加载动画 在现代 Web 应用开发中,用户体验至关重要。当执行耗时操作(如网络请求或数据处理)时,显示一个友好的加载动画可以让用户知道系统正在工作,而不是卡…...

大模型微调 - 自注意力机制

一.什么是自注意力机制 注意力机制(Attention Mechanism)是一种能够根据输入的相关性动态分配权重的机制,广泛应用于自然语言处理、计算机视觉等领域。其核心思想是:“让模型在处理当前元素时,关注与其最相关的其他部…...

TDengine 集群高可用方案设计(二)

四、TDengine 集群高可用方案设计 4.1 硬件与网络架构设计 服务器选型:选择配置高、稳定性强的服务器,如戴尔 PowerEdge R740xd、华为 RH2288H V5 等。以戴尔 PowerEdge R740xd 为例,它配备英特尔至强可扩展处理器,具备高性能计…...

【Langchain】RAG 优化:提高语义完整性、向量相关性、召回率--从字符分割到语义分块 (SemanticChunker)

RAG 优化:提高语义完整性、向量相关性、召回率–从字符分割到语义分块 (SemanticChunker) 背景:提升 RAG 检索质量 在构建基于知识库的问答系统(RAG)时,如何有效地将原始文档分割成合适的文本块(Chunks&a…...

深入剖析扣子智能体的工作流与实战案例

前面我们已经初步带大家体验过扣子工作流,工作流程是 Coze 最为强大的功能之一,它如同扣子中蕴含的奇妙魔法工具,赋予我们的机器人处理极其复杂问题逻辑的能力。 这篇文章会带你更加深入地去理解并运用工作流解决实际问题 目录 一、工作流…...

C++----模拟实现string

模拟实现string,首先我们要知道成员变量有哪些: class _string{private:char* _str;size_t capacity;//空间有多大size_t size;//有效字符多少const static size_t npos;};const size_t _string::npos-1;//static在外面定义不需要带static,np…...

CodeMeter Runtime 安装失败排查与解决指南

CodeMeter Runtime 是威步提供的核心运行服务组件,用于加密授权的识别与管理。如果安装过程中出现异常或中断,常见原因包括系统冲突程序、数字签名校验失败、安全软件干扰或权限不足。 以下为推荐的完整排查步骤: 1. 检查并清理冲突程序或驱动…...

基于K8s日志审计实现攻击行为检测

K8s日志审计以一种事件溯源的方式完整记录了所有API Server的交互请求。当K8s集群遭受入侵时,安全管理员可以通过审计日志进行攻击溯源,通过分析攻击痕迹,找到攻击者的入侵行为并还原攻击者的攻击路径,修复安全问题。 在本篇文章中…...

【Linux网络编程】应用层协议HTTP(实现一个简单的http服务)

目录 前言 一,HTTP协议 1,认识URL 2,urlencode和urldecode 3,HTTP协议请求与响应格式 二,myhttp服务器端代码的编写 HTTP请求报文示例 HTTP应答报文示例 代码编写 网络通信模块 处理请求和发送应答模块 结…...

短视频+直播商城系统源码全解析:音视频流、商品组件逻辑剖析

时下,无论是依托私域流量运营的品牌方,还是追求用户粘性与转化率的内容创作者,搭建一套完整的短视频直播商城系统源码,已成为提升用户体验、增加商业变现能力的关键。本文将围绕三大核心模块——音视频流技术架构、商品组件设计、…...

STM32定时器---基本定时器

目录 一、定时器的概述 二、时基单元 三、基本定时器的的时序 (1)预分频器时序 (2)计数器时序 四、基本定时器的使用 一、定时器的概述 在没有定时器的时候,我们想要延时往往都是写一个Delay函数,里面…...

mysql快速在不同库中执行相同的sql

目录 背景 解决方案 方式一:利用变量拼接好sql,复制出来执行(简单,推荐) 方式二:使用存储过程和游标实现(比较复杂,脚本需要拼接一个完整的,也比较麻烦,不…...

大模型微调 - transformer架构

什么是Transformer Transformer 架构是由 Vaswani 等人在 2017 年提出的一种深度学习模型架构,首次发表于论文《Attention is All You Need》中 Transformer 的结构 Transformer 编码器(Encoder) 解码器(Decoder) …...

【器件专题1——IGBT第1讲】IGBT:电力电子领域的 “万能开关”,如何撑起新能源时代?

一、IGBT 是什么?重新认识这个 “低调的电力心脏” 你可能没听过 IGBT,但一定用过它驱动的设备:家里的变频空调、路上的电动汽车、屋顶的光伏逆变器,甚至高铁和电网的核心部件里,都藏着这个 “电力电子开关的瑞士军刀”…...

文件IO(Java)

注:此博文为本人学习过程中的笔记 1.概念 狭义上的文件是指保存在硬盘上的文件,广义上指操作系统进行资源管理的一种机制,很多软件/硬件资源都可以抽象成文件,这里我们针对的是狭义上的文件。 在硬盘里还有文件夹,这…...

常见缓存淘汰算法(LRU、LFU、FIFO)的区别与实现

一、前言 缓存淘汰算法主要用于在内存资源有限的情况下,优化缓存空间的使用效率。以确保缓存系统在容量不足时能够智能地选择需要移除的数据。 二、LRU(Least Recently Used) 核心思想:淘汰最久未被访问的数据。实现方式&#x…...

Sentinel数据S2_SR_HARMONIZED连续云掩膜+中位数合成

在GEE中实现时,发现简单的QA60是无法去云的,最近S2地表反射率数据集又进行了更新,原有的属性集也进行了变化,现在的SR数据集名称是“S2_SR_HARMONIZED”。那么: 要想得到研究区无云的图像,可以参考执行以下…...

HTMLCSS模板实现水滴动画效果

.container 类:定义了页面的容器样式。 display: flex:使容器成为弹性容器,方便对其子元素进行布局。justify-content: center 和 align-items: center:分别使子元素在水平和垂直方向上居中对齐。min-height: 100vh:设…...