Linux笔记——工程管理

本文详细介绍Linux下的Make工具,包括其工作原理、Makefile文件编写、变量使用、规则设定及函数应用等内容,帮助读者掌握高效的工程管理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 工程管理
  1. 工程管理: 顾名思义,是指管理项目中的多个工程文件。
  2. Linux 系统的工程管理:
      
      Linux 系统提供了工程管理工具(make),也叫“自动编译管理器”,
      "自动": 是指make能够根据源文件的时间戳自动发现更新过的
      文件,从而减少编译的工作量

     工程管理工具(make): 是需要通过读取Makefile文件的内容来执行编译工作的;

   3. Makefile 文件:
       可以将Makefile文件视为 make 工具的配置文件。Makefile 中可以指定编译方式,
       也可以指定某些操作动作。

   4. Makefile 文件编写:


      语法格式:
                 目标 :  [依赖]
              命令
       目标:编译生成的文件/指定操作动作名称
       依赖:要生成目标,所依赖的文件  [] 代表可省略
       命令:利用依赖生成目标的操作指令

       特别注意: 命令前必须是一个 Tab 键

      例子:
       readfile :   fread.o
               gcc fread.o -o readfile
       fread.o :   fread.c
               gcc  -c fread.c -o readfile.o

      4.1  Makefile 中的变量
          1)  预定义的变量
           CC   c编译器的名称      默认值   cc
           RM   文件删除程序名称   默认值   rm
           ...
      2)  自动变量
            @ :    代表目标
        < :   代表依赖中的第一个     
        ^ :    代表所有的依赖项
        ...
      3)  自定义变量
            语法格式:    变量名=变量值
                  例子: var=main.c  queue.c 

          变量的引用:  $(变量名)
          
    4.2  Makefile 中的规则:

         1) 隐含规则:
            Makefile 可以根据指定的.o 文件找到所需要的同名源文件,并且
        自动帮我们生成对应的编译语句

        target :  dep.o
            gcc dep.o -o target

            
                target :  dep.o
            gcc dep.o -o target
                /*隐含规则自动生成*/
        dep.o :  dep.c
            gcc -c dep.c -o dep.o

        隐含规则的弊端:
                如果目标是一个动作的名称,此时是不需要依赖的,也不需要任何的编译过程的,

                如果此次存在一个和动作目标同名的源文件,那么根据隐含规则,makefile 就会去
        编译该源文件的,从而会引起混淆。

                解决方案: Makefile 提供了一个关键字: .PHONY  修饰目标,告诉Makefile 对
                   修饰的目标不能采用隐含规则;

               语法规则: 
                                     .PHONY :  目标

                     .PHONY :  clean

        衍生概念: 伪目标 
                    没有依赖的目标
                例子:  clean :
                        rm  *.o

      2)  静态规则
           
               如果我们在生成.o 文件时候,需要额外指定编译选项 (例如 -fPIC), 可以使用
           静态规则;

            OBJS = queue.o main.o  queue.txt

        $(OBJS):%.o:%.c
            $(CC) -c $^ -o $@

            $(OBJS) : 原始列表
        %.o     :  匹配模式 匹配后的内容作为目标
        %.c     :  作为目标的依赖

      
      4.3  Makefile 中的函数使用:

           格式:  $(funcname arg1,arg2...)

       Makefile中常用函数:
        
        1.   wildcard   用于文件匹配的:
             应用举例: 
            SRC = $(wildcard  ./*.c)
        2.   patsubst   用于字符串匹配替换
             格式: patsubst 匹配模式,替换文本,字符串列表

         例子:  RET = $(patsubst %.c,%.o, a.c 1.h b.txt)
         
                  

      

### LSTM的输入与输出机制 #### 输入结构 LSTM是一种特殊的循环神经网络(Recurrent Neural Network, RNN),其设计目的是解决传统RNN在处理长时间序列时存在的梯度消失或爆炸问题。LSTM通过引入门控机制来控制信息流,从而能够有效捕捉长期依赖关系。 对于LSTM而言,其输入通常是一个三维张量,形状为 `(样本数, 时间步长, 特征维度)`。具体来说: - **样本数**表示数据集中有多少条独立的时间序列。 - **时间步长**指每一条时间序列包含多少个时间点的数据。 - **特征维度**则代表每个时间点上的特征向量长度[^1]。 例如,在自然语言处理任务中,如果我们将一句话看作是一组单词组成的序列,则这里的“时间步长”就是句子中的词数量,“特征维度”可以是每个词经过嵌入层后的向量大小。 #### 输出形式 LSTM 的输出取决于具体的配置方式以及应用场景: 1. 对于单层 LSTM 来说,它会针对每一个时间步返回隐藏状态 \(h_t\) 和细胞状态 \(c_t\) 。其中隐藏状态作为当前时刻该节点对外界表达的信息载体;而细胞状态内部存储着更深层次的历史记忆信息[^2]。 2. 当构建深层 LSTM 结构 (即堆叠多个 LSTM 层) 时,前一层的所有时间步输出将被送至下一层作为新输入继续传播计算直到最后一层结束为止。 3. 实际应用过程中往往还需要附加额外操作比如加入全连接层(FC),以便最终得到符合需求的目标值——无论是连续型变量还是离散类别标签等不同类型的任务目标都可以通过调整 FC 后面激活函数的形式达成目的。 4. 在某些特定情况下如仅关心整个序列最后一步的状态而非中间过程变化情况的话可以直接取最后一个时间步对应的 h_T 或 c_T 进行后续处理而不是保留全部历史记录下来。 5. 另外值得注意的是当涉及到多维或多模态数据源联合建模的时候可能还会存在更加复杂的组合模式比如说同时考虑视觉图像帧加上音频片段共同作用影响未来趋势走向等问题此时就需要灵活运用不同类型的编码解码器架构配合起来完成相应功能实现[^3]。 ```python import tensorflow as tf model = tf.keras.Sequential([ tf.keras.layers.LSTM(units=64, input_shape=(None, feature_dim), return_sequences=True), tf.keras.layers.Dense(output_size, activation='softmax') ]) ``` 上述代码展示了一个简单的基于 TensorFlow/Keras 构造出来的带有单层 LSTM 单元并设置 `return_sequences` 参数为 True 表明希望获取每一时刻 t 所产生的隐含层状态 ht 给予下一个 Dense Layer 做进一步分类决策使用的例子。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值