• Make 详解


    1. windows的IDE中自带Makefile,但是unix和linux需要自己写

    2. makefile除了指定文件的编译顺序和规则以外,也可以执行操作系统的命令

    3. make 是一个命令工具,是一个解释makefile中指令的工具,大部分IDE都有该工具,比如VC++中的nmake,linux下的GNU Make等等。

    4. 各厂商的make不同,但都是在“文件依赖性”上做文章

    5. 扩展:编译的四个步骤:
        1. 预处理(.c文件-- .i文件):去注释;宏替换;头文件展开等 -E 
        2. 编译:(.i文件-- .s文件):c语言--汇编语言   -S (大写S)
        3. 汇编:(.s文件-- .o文件):汇编---二进制bin  -c(小写)
        4. 连接:(.o文件-- exe文件):二进制---可执行文件  无选项

    6. 扩展:将多个文件编译为exe的方式:

    多个源文件的编译:(假设为func1.c和func2.c)有两种方法:
    1.    直接编译多个源文件:gcc func1.c func2.c -o a.out  
    2.    分别gcc -c 生成.o,然后将各个.o链接成a.out:
    a)    Gcc -c func1.c func1.o 
    b)    Gcc -c func2.c func2.o 
    c)    Gcc func1.o func2.o -o a..out 
    一般情况下我们常见的是第二种,因为第一种相当于修改一个文件,所有的源文件都要编译,但

    注意:虽然编译分为四步,但是实际使用时,一般是两步,即.c ---- ,o 和  ,o-----exe ,即常说的编译和链接。

         

    =========================================

    =========================================

    shell 详解

    =========================================

    =========================================

    1. shell的for循环格式如下:

    1. for  变量名 in  取值列表;
    2. do 
    3. <tab>actiont1;
    4. <tab>actiont2;
    5. ....
    6. done 

    其中的取值列表有几种格式:

    1) for i in {1,2,3,4,7.15};

    2)  for ((i=0; i<10; i++))  ##即使用(())  括起来以后,即可以使用C语言。

    3)for i in `seq 10`  #其中的seq是可以在终端输入的命令,seq10等效于 1,2,3,4,5,,10.

    4)for i in `ls` ;      for i in `find`  之类的都是可以的。

    其中 4)举例子: 查找内核下所有名为 head.S的文件,病计算其MD5值的命令为:

    1. for i in `find -name head.S`;do md5sum $i;done; 
    2. 注意此命令可以直接在终端上输入的/

    即for循环的循环变量不仅是数字性质的,还可以是字符串性质的。 注意各个表达式之间用分号隔开;最终的done后面一定要加分号.   one more sample: 打印九九乘法表:

    1. for i in `seq 9`;
    2. do
    3. for j in `seq 9`;
    4. do
    5. echo -n -e "$i*$j\t"
    6. done
    7. done

    shell中的循环的循环变量,更多是非数字的情况,即字符的情况之类的。

    ==========================正则表达式=======================

    1. 正则表达式 包含普通字符(a-z)以及特殊字符(元字符)

    2. 正则的核心在于使用单个字符串来描述 匹配某个规则的一系列字符串,(即提取出一系列字符串的规律)

    3. linux 的正则表达式详见百度网盘的“正则表达式--菜鸟教程”,但是总的来说就是一个匹配字符的工具,可以用在shell里面,建议仅掌握基础的正则表达式即可,此外整租还可以用于grep中

    4. 正则表达式实际使用的时候,往往是很繁琐的,很不直观,但是熟悉后效率比较高

    ===================shell中的判断,循环语句略===============

    rcS不同的厂家实现方式有差异,单都是循环遍历init.d目录下的Sxx开头的文件的内容。如下是不同的两家厂商的Sxx所包含的脚本:

    1. S05NPU_init
    2. S10udev
    3. S15init
    4. S20urandom
    5. S25ambrwfs
    6. S40network
    1. S00devs
    2. S01udev
    3. S11init
    4. S30ambrwfs
    5. S80network

    可见不同厂商的初始化虽然有所不同,但是有相同的几个.

    其中的udev主要是为了实现USB热插拔而设计的一种驱动框架,详见USB总结

    1. sxx_init 中的操作是相仿的,都是对 local/bin 和 lib/firmware 的操作
    2. sxx_ambrwfs 中的操作主要是进行文件系统的挂载以及分区等操作
    3. sxx_network主要是IP,mac的设置等

    其中的ambrwfs 

  • 相关阅读:
    企业密码安全:ADSelfService Plus 提升密码管理的千里之行
    c++隐式类型转换存在的陷阱
    论文阅读——InstructGPT
    【序列召回推荐】(task3)GNN召回之SR-GNN
    Docker 容器常见故障的排查处理
    开具数电票如何减少认证频次?
    前端Mock神器-Apifox
    金蝶云星空简单账表动态列名汇总
    Go 面向对象(方法)
    word文档怎么翻译成中文?不妨试试这几个方法
  • 原文地址:https://blog.csdn.net/maliangwen_12138/article/details/125373172