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 详解 的相关文章

  • make px4_sitl gazebo报错:FAILED: ROMFS/romfs_extract.stamp

    正在ubuntu18 04编译PX4的代码 xff0c 解决ignition math库报错后 xff0c 重新运行make px4 sitl gazebo xff0c 出现新的报错 span class token punctuation
  • catkin_make报错

    catkin make报错 xff1a CMake Error at CMakeLists txt 1 Parse error Expected a span class token builtin class name command s
  • make[2]: *** No rule to make target ‘../lib/libopencv_core3.so.4.3.0‘, needed by xxxxx

    原因是我之前装的opencv版本是4 3 0 xff0c 为了https editor csdn net md articleId 61 126686315这个链接里的原因 xff0c 重装了opencv4 4 0 xff0c 结果再跑原来
  • make -C和M=的作用

    当make的目标为all时 xff0c C KDIR 指明跳转到源码目录下读取那里的Makefile xff1b M 61 PWD 表明然后返回到当前目录继续读入 执行当前的Makefile
  • catkin_make和cmake

    catkin make是ROS下面的一种编译方式 xff0c 基于cmake xff0c 但是又不同于cmake cmake只能编译指定的package xff0c 但是不同package之间的关系没办法链接 xff0c 而且cmake只能
  • Linux项目自动化构建工具-make/makefile 介绍及使用

    使用背景 在工程中的源文件不计数 xff0c 其按类型 功能 模块分别放在若干个目录中 xff0c makefile定义一系列 规则来指定什么文件需要先编译 xff0c 什么文件需要后编译 xff0c 哪些文件需要重新编译 xff0c 或者
  • 编译px4 Firmware 执行make报错的问题解决办法

    ccache error Failed to create temporary file for home xxx ccache tmp tmp cpp stderr Permission denied 一般这个报错下面还会接另一个报错 x
  • [新手编译内核]kernel进行编译时提示No rule to make target `menconfig'.

    windows下下载了 linux 2 6 37内核源码 xff0c 拷贝到U盘上 xff0c 通过mount挂载到了虚拟机里的Centos 5 5系统上 通过putty使用host only方式连接到虚拟机 xff0c 进行操作 在 mn
  • make问题:make[1] entering directory

    make问题 xff1a make 1 entering directory 执行make distclean命令 posted on 2014 07 16 07 48 一生学习 何来毕业 阅读 评论 编辑 收藏 转载于 https www
  • No rule to make target错误解决方案

    报错 xff1a No rule to make target My Wall Paper2 img png needed by debug qrc resource cpp Stop 解决方案 xff1a 把 qrc文件删了新建一个res
  • 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
  • gcc、make、makefile、cmake、cmakelists区别

    转自 xff1a http www zhihu com question 36609459 辉常哥 1 gcc是GNU Compiler Collection xff08 就是GNU编译器套件 xff09 xff0c 也可以简单认为是编译器
  • cmake与make的区别及CMakeLists.txt文件编写

    一 cmake与make的区别 make工具是一个自动化编译工具 xff0c 它会根据Makefile中的规则进行批处理编译 当需要编译的文件较多时 xff0c 使用make工具会大大提高效率 但是 xff0c 当项目较大时 xff0c 编
  • 如何实现make工具的降版本?

    为什么要降make版本 因为编译MTK 平台的Android source code报错 而且是莫名奇妙的错误 困扰很久 一 问题背景 Ubuntu 15 04以上的make版本都已经是4 0 官方目前推荐的编译环境还是基于Ubuntu 1
  • Windows下配置cygwin/cmake

    对于那些低配置的电脑 要在windows做一些简单的coding work 安装一个VS实在有些转不开 所以我首先想到了通过cygwin cmake配置一个简单的开发环境 对于我那台老旧的IBM T43完全没问题 1 安装cygwin 首先
  • 【开发工具】【make】make 3.82源码编译安装

    摘要 通过下载make 3 82源码 再编译机上安装make 3 82版本 解决make版本过高的问题 1 下载make 3 82 下载地址为 wget ftp ftp gnu org gnu make make 3 82 tar gz 我
  • CMake编程实践(五) 编译静态库和动态库

    使用Cmake 编译库 本篇使用CMake编译一个动态库和静态库 并安装到系统中 对应的工程是cmake utilsbox lib 编译静态库 指定编译静态库 关键词为static 不添加关键字默认静态库 add library utils
  • 如何在基于 Debian 的系统上从源代码安装 Wine

    作为 Windows 程序的狂热用户 您可能会发现有时需要在 Ubuntu 系统上使用特定程序 尽管还有其他选项 例如虚拟机或 Wine 等程序 它有助于在 Linux 上运行 Windows 程序 但它们涉及一些工作 而且并不是运行这些程
  • 【scala】IDEA运行scala程序:Error:scalac: bad option: ‘-make:transitive‘

    1 概述 转载 原文链接 https blog csdn net qq 38617531 article details 87935460 2 问题描述 IDEA运行scala程序报错 Error scalac bad option mak

随机推荐

  • 【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