Make 详解

2023-05-16

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循环格式如下:

for  变量名 in  取值列表;
do 
<tab>actiont1;
<tab>actiont2;
....
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值的命令为:

for i in `find -name head.S`;do md5sum $i;done; 

注意此命令可以直接在终端上输入的/

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

for i in `seq 9`;
do
    for j in `seq 9`;
    do
        echo -n -e "$i*$j\t"
    done
done

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

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

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

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

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

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

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

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

 S05NPU_init
 S10udev
 S15init
 S20urandom
 S25ambrwfs
 S40network

 S00devs
 S01udev
 S11init
 S30ambrwfs
 S80network

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

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

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

其中的ambrwfs 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Make 详解 的相关文章

  • Invoking “make -j1“ failed

    Invoking 34 make j1 34 failed 在进行catkin make j1 的单线程编译时 xff0c 出现了很玄学的问题 xff0c 就是一会编译成功 xff0c 之后重新编译又报这个错误 xff0c 终端报错的是这个
  • Linux之编译程序详细介绍---./configure、make、make install

    本节介绍如何通过源代码生成可执行程序 xff0c 在博主前期使用NVIDIA Jetson TX2时 由于Arm架构的各个包不完备 经常需要源码编译OpenCV等 为什么要编译软件呢 xff1f 可用性 尽管有些发行版已经包含了版本库中的一
  • make:file not recognized: file format not recognized

    学艺不精 xff0c 在Makefile规则中包含了头文件 xff0c 导致make编译时出现标题错误 去掉Makefile中的 h文件即可 特此记录下
  • make详解

    Make 1 学习make的必要性 在Linux中 有一个用来维护程序模块关系和生成可执行程序的工具 xff0d make 他可以根据程序模块的修改情况重新编译链接生成中间代码或最终的可执行程序 执行make 命令 xff0c 需要一个名为
  • 虚拟机ubuntu上安装make和cmake

    可先更新下apt xff1a sudo apt get update 首先安装make xff1a sudo apt get install ubuntu make sudo apt get install make sudo apt ge
  • 编译px4 Firmware 执行make报错的问题解决办法

    ccache error Failed to create temporary file for home xxx ccache tmp tmp cpp stderr Permission denied 一般这个报错下面还会接另一个报错 x
  • make, cmake, bazel

    整理收集了一些自动化编译链接工具的使用教程 希望可以在之后能更好的理解和使用它们 1 make Linux 下 Make 命令Linux make Command Explained With Examples使用make命令编译项目文件入
  • 关于make zImage时出现include/asm/timex.h:15:28: asm/arch/timex.h: No such file or directory

    root 64 localhost linux cd linux 2 6 18 root 64 localhost linux 2 6 18 make zImage CHK include linux version h SYMLINK i
  • C++(14):make_unique

    C 43 43 14增加了make unique xff0c 用于创建unique ptr对象 xff1a include lt iostream gt include lt memory gt using namespace std in
  • Make与CMake

    1 Make与CMake 首先先来了解一下gcc xff0c gcc是GNU Compiler Collection 就是GNU编译器套件 xff0c 也可以简单认为是编译器 xff0c 它可以编译很多种编程语言 包括C C 43 43 O
  • 关于gcc、make和CMake的区别

    CMake是一种跨平台编译工具 xff0c 比make更为高级 xff0c 使用起来要方便得多 CMake主要是编写CMakeLists txt文件 xff0c 然后用cmake命令将CMakeLists txt文件转化为make所需要的m
  • make、makefile、cmake之间的区别与联系

    make makefile cmake之间的区别与联系 首先说明一下make makefile cmake存在的原因 在进行编译时 xff0c 如果程序只有一个源文件 xff0c 那么我们可以直接利用gcc命令对其进行编译 xff1b 但是
  • makefile:2: *** missing separator. Stop. make 之后出现的错误,解决方法

    问题 今天建立了个个helloworld c 以及Makefile文件 hellworld c 中内容如下 span class hljs preprocessor include lt stdio h gt span span class
  • On make and cmake

    你或许听过好几种 Make 工具 xff0c 例如 GNU Make xff0c QT 的 qmake xff0c 微软的MS nmake xff0c BSD Make xff08 pmake xff09 xff0c Makepp xff0
  • linux下的项目管理工具make和git的使用

    在linux下我们不能向在windows下这样去快速的进行编译 xff0c 在以前我们都是使用一个命令一个命令地去将 c文件生成程序 xff0c 在这里我们介绍项目自动化辅助构建工具make以及项目版本管理工具git make make说白
  • CMake与Make

    大家都知道 写程序大体步骤为 1 用编辑器编写源代码 如 c文件 2 用编译器编译代码生成目标文件 如 o 3 用链接器连接目标代码生成可执行文件 如 exe 但如果源文件太多 一个一个编译时就会特别麻烦 于是人们想到 为什么不设计一种类似
  • CMake编程实践(五) 编译静态库和动态库

    使用Cmake 编译库 本篇使用CMake编译一个动态库和静态库 并安装到系统中 对应的工程是cmake utilsbox lib 编译静态库 指定编译静态库 关键词为static 不添加关键字默认静态库 add library utils
  • VSCode+arm-none-eabi+msys使用Make实现STM32交叉编译

    记录一下在Windows平台下 利用VSCode的arm none eabi扩展和msys使用Make实现STM32的交叉编译 准备 1 安装arm none eabi扩展 在VSCode的扩展窗口 搜索eabi 安装windows arm
  • Linux下Make编译结果输出到文件

    Linux系统下执行make命令 编译比较大一点的工程或者文件的时候 在命令行下错误和警告信息直接就把我们的实现覆盖了 把编译日志输出到文件是个选择 执行如下命令即可达到目的 make gt build log 2 gt 1
  • Cmake的使用

    简介 CMake是一个跨平台的安装 编译 工具 可以用简单的语句来描述所有平台的安装 编译过程 他能够输出各种各样的makefile或者project文件 能测试编译器所支持的C 特性 类似UNIX下的automake 只是 CMake 的

随机推荐

  • 【mavros源码解析】10 MAVROS包含文件及消息机制

    Mavros解析 10 mavros源码 Mavros简介Mavros代码详解libmavconn xff1a mavros xff1a mavros extras mavros msgs MAVROS 包含文件include launch
  • 【PX4 飞控剖析】03 PX4固件烧录以及调试指南

    PX4 飞控剖析 03 PX4固件烧录以及QGC初步指南 一 加载固件二 加载参数三 校准传感器四 遥控器校准五 飞行模式六 电调校准七 检查参数 标题 xff1a PX4 飞控剖析 03 PX4固件烧录以及调试指南起源 xff1a 根据阿
  • 【PX4 飞控剖析】05 PIX4 连接QGC 可以烧录固件但是连接不上

    PX4 飞控剖析 05 PIX4 连接QGC 可以烧录固件但是连接不上 总结 如图 xff1a QGC error link Device on COM3 Error connecting Could not create port 这个是
  • 【SLAM】英特尔D455与D435i的区别

    SLAM 英特尔D455与D435i的区别 参考链接 xff1a bing搜索 D455 深度摄像头 官方介绍 D455 机械尺度更大 视场角范围更广 视场角更宽 同时RGB 传感器技术 支持全局快门 xff0c 如果对视野范围有要求的用户
  • Bubble Planner无人机运动规划算法解读

    Bubble Planner无人机运动规划算法解读 本文将介绍一种无人机的在线路径规划算法 Bubble Planner xff0c Bubble Planner 是港大张富老师MaRS实验室提出了一种的新型规划算法 xff0c 是一种用于
  • 【论文研读】无人机飞行模拟仿真平台设计

    无人机飞行模拟仿真平台设计 摘要 xff1a 为提高飞行控制算法的研发效率 降低研发成本 基于数字孪生技术设计一个无人机硬件在环飞行模拟仿真平台 从几何 物理和行为3个方面研究无人机数字模型构建方法 将物理实体以数字化方式呈现 设计一种多元
  • 【深度学习基础】

    最终效果如上图所示 xff1a 真不知道这一路有多艰难 众所周知CHATGPT 可以做表格和 公式 xff0c 但它输出的文本是直接渲染好的 你是直接复制不了的 xff0c 你只能复制它出来的字体 于是我尝试了各种 想让它输出表格和文字的方
  • 【蛤蟆先生去看心理医生】

    第一章 整个人都不太好 人物性格描述蛤蟆热情 时尚 爱冒险 xff0c 现在抑郁 xff0c 不能自拔獾智慧 威严河鼠关心朋友 xff0c 有点絮叨鼹鼠体贴善良 第二章 擎友前来相助 讲诉了鼹鼠和河鼠对蛤蟆情况的担忧和讨论 鼹鼠回忆起过去蛤
  • linux下tar、zip、rar解压缩命令使用

    zip 命令 将当前目录下的所有文件和文件夹全部压缩成myfile zip zip r myfile zip r表示递归压缩子目录下所有文件 把myfile zip文件解压到 home sunny unzip o d home sunny
  • Pixhawk—添加一个自定义传感器—超声波(串口方式)

    xfeff xfeff 版权声明 xff1a 本文为博主 原创 文章 xff0c 未经博主允许可以转载 xff0c 注明博客出处 xff1a http blog csdn net FreeApe 目录 43 Pixhawk添加一个自定义传感
  • parson例说

    例说 以JSON中国网站的例子 xff0c 测试代码 include 34 parson h 34 include lt stdio h gt include lt stdlib h gt void test write void void
  • IAR编译优化

    IAREWARM编译器和其他厂家的C编译器相比非常高效 但是当程序里面包含对时序要求比较严格的代码的时候 IAR常常会把这些代码过渡优化 破坏了时序的要求 造成程序错误 在程序代码比较紧的时候又必须优化 可以在要求比较严格的代码的函数前面
  • 在树莓派上使用GPS模块

    GPSD介绍 GPSD是一个Linux下的一个守护进程 xff0c 用以侦听来自GPS接收器的位置等信息 xff0c 并将这些位置信息转换成一种简化的格式 GPSD支持二十多种不同GPS输出格式的GPS接收机 xff0c 例如NMEA As
  • 用两片74HC138组合成4/16译码器

    译码器很多 xff0c 常见的有2路译码器 xff08 74HC139D 2路2 4译码器 多路复用器 xff09 xff0c 3 8译码器 xff08 74HC138D 三八译码器 解码器 xff09 和4 16译码器 xff08 74H
  • virtual method but non-virtual destructor

    有虚函数 xff08 纯虚函数 xff09 就应该有虚析构函数 class Base public virtual void func 61 0 virtual Base 注意 xff0c 有 实现 class Child public B
  • STM32使用C标准库time.h里面的时间时钟函数

    标准C里面已经定义好时间日期库time h xff0c 在嵌入式里面并没有被限制使用 下面我们看一下怎样在IAR中使用time h库 有四个与时间相关的类型 xff1a clock t time t size t 和 tm 类型 clock
  • ros 学习之计算机视觉资料总结

    ros 学习之计算机视觉 ros高效编程Visual ServoingAugmented Reality xff08 AR xff09 Perception and object recognitionvisual odometry 古月居
  • 数字信号处理 离散时间信号

    1 时域离散信号 xff1a 对模拟信号进行等间隔采样 xff0c 即得到时域离散信号 xff08 时间离散 xff0c 但是幅度没有量化 xff0c 离散 xff09 1 xff09 例如 对连续信号Xa t 以等间隔T对其进行采样 xf
  • 复指数函数

    复指数信号 百度百科 复指数信号是指数信号的指数因子是复数时 xff0c 称之为复指数信号 复指数信号在物理上是不可实现的 xff0c 但是它概括了多种情况 利用复指数信号可以表示常见的普通信号 xff0c 如直流信号 指数信号 正弦信号等
  • Make 详解

    1 windows的IDE中自带Makefile 但是unix和linux需要自己写 2 makefile除了指定文件的编译顺序和规则以外 xff0c 也可以执行操作系统的命令 3 make 是一个命令工具 xff0c 是一个解释makef