002编程基础----makefile

一、总述

make来构建和管理自己的软件工程。

GNU的make能够使整个软件工程的编译、链接只需要一个命令就可以完成。

make 在执行时,需要一个命名为Makefile的文件。

Makefile文件描述了整个工程的编译,链接规则。包括:

1、工程中哪些文件需要编译

2、需要创建哪些文件

3、如何创建这些文件

4、如何产生我们想要的可执行文件。

例如:

hello: main.o func1.o func2.o

  gcc main.o func1.o func2.o -o hello

main.o:main.c

  gcc -c main.c

fun1.o:func1.c

  gcc -c func1.c

func2.o:func2.c

  gcc -c func2.c

二、Makefile术语

1、规则:用于说明如何生成一个或多个目标文件,格式如下:

target:prerequisites

  command

即,目标  依赖  命令

main.o:main.c

  gcc -c main.c    命令需要tab键

make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为两者之一时,可以使用如下方法指定:

make -f 文件名

2、伪目标

Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets)。

.PHONY : clean

clean:

  rm -f hello main.o func1.o func2.o

".PHONY"将“clean”目标声明为伪目标。

3、变量

obj=main.o func1.o func2.o func3.o

hello:$(obj)

  gcc $(obj) -o hello

另外,makefile中,存在系统默认的自动化变量

$^:代表所有的依赖文件

$@:代表目标

$<:代表第一个依赖文件

改写:

hello:main.o func1.o func2.o

  gcc $^ -o $@

4、杂项

makefile中“#”字符后的内容被视作注释

hello:hello.c

  @gcc $^ -o $@

第一个“@”用于取消回显。

转载于:https://www.cnblogs.com/liutianyi10/p/3837969.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RepVGG

论文链接 一.背景: 现在的一些复杂模型虽然有很高准确度,但是缺点也很明显: 1.多分支,带来了速度的减慢和降低显存的使用率; 2.Mobilenet虽然采用可分离卷积.shufflenet采用分组卷积,带来了flop降低,但是却增加了内存的访问成本(MAC) 二.网络结构 1. 模型 RepVGG在train和…

2018十大科技丑闻,连娱乐圈都甘拜下风

来源&#xff1a;科技日报这一年里&#xff0c;风起云涌的科技界很忙有些人尝到了甜头有些人却吃到了苦头有些事件令人瞠目结舌、难以置信“404”教授梁莹120篇论文凭空蒸发韩春雨论文调查结果被吐槽酸碱体质论与心脏干细胞的创始人双双走下神坛日本福岛核电站污水处理报告错误…

华为究竟做了多少芯片?

来源&#xff1a;半导体行业观察华为依托于旗下的海思大举进军芯片的这个事实已经广为人知了。除了Kirin芯片外&#xff0c;华为在IPC视频编解码和图像信号处理的芯片、电视芯片&#xff0c;Balong基带和NB-IoT芯片等多个领域都取得不错的市场表现&#xff0c;也获得了大家的高…

leetcode hot100(第一部分) + python(c++)

1-1.两数之和 思路&#xff11;&#xff1a;两层for循环 &#xff2f;&#xff08;&#xff4e;2&#xff09; class Solution:def twoSum(self, nums, target):res []for i in range(len(nums)):for j in range(i1, len(nums)):if nums[i]nums[j]target:res.extend([i, j])b…

ThinkPHP中的find和select的区别

ThinkPHP作为PHP中应用广泛又好用的框架&#xff0c;能比较快速的开发MVC架构的管理系统&#xff0c;获得了大量的应用。但是在ThinkPHP中select&#xff08;&#xff09;和find&#xff08;&#xff09;方法有什么区别呢&#xff1f; 事实上find()返回一个一维数组&#xff0c…

云计算深度报告:算力时代迎巨变

来源&#xff1a;中泰证券云计算正进入算力时代供给端:数据存量增长与计算成本下降推动算力需求增长信息技术快速发展与传统产业数据化转型带来大量数据存量。随着云计算、大数据、物联网、人工智能等信息技术的快速发展和传统产业数字化的转型&#xff0c;数据量呈现几何级增长…

c++将.cpp编译为.so文件

1.首先看文件形式 其中cpp1是直接调用.cpp和生成.so的文件夹。 cpp2是测试生成的.so可以使用的文件夹。 2.先直接编译.cpp检查代码没问题 a.cpp内容: #include <iostream> #include "a.h"void A::readImg(char* path) {B b;b.readImg(path);} a.h内容: …

vscode debug c++与opencv程序

一.工程代码 1.本文调试代码文件夹截图为: 2.代码细节: a.h: #ifndef A_H_ #define A_H_class A {public:A(){}~A(){}void readImg(const char* path);};#endif a.cpp: #include<opencv2/opencv.hpp> #include <iostream> #include "a.h"using name…

法兰程序CAD开发的进展

目前似乎已经无法突破法兰盘的螺栓孔大小的问题了&#xff0c;只能通过程序来写这一部分的内容。 插入到图形中的块只有法兰的外径、内径等可以进行参数化的数据。 而螺栓孔需要通过程序来生成并以陈列的形式插入到圆心&#xff0c;与圆心重合约束。 可以在一张图中保存环形陈列…

回顾 | 2018年十大AI新闻 中国继续占据主导优势

来源&#xff1a;网易智能摘要&#xff1a;普华永道&#xff08;PwC&#xff09;估计&#xff0c;到2030年&#xff0c;AI领域的发展将为全球经济贡献15.7万亿美元。本次评选出2018年十大AI新闻&#xff0c;它们囊括各个领域&#xff0c;有好有坏&#xff0c;从AI突破和新投资&…

新科技快速指南系列之“5G”:历史、现在与未来

来源&#xff1a;36氪摘要&#xff1a;5G仍然让人感觉很遥远。但是这些碎片正在拼凑在一起。未来取决于连通性&#xff08;connectivity&#xff09;。从人工智能和自动驾驶汽车到远程医疗和混合现实&#xff0c;再到迄今为止无法想象的技术&#xff0c;所有我们希望能够让我们…

javascript入门视频第一天 小案例制作 零基础开始学习javascript

JavaScript 是我们网页设计师必备的技能之一。我们主要用javascript来写的是网页特效。我们从零基础开始学习javascript入门。 但是&#xff0c;好的同学刚开始不知道怎么学习&#xff0c;接触js&#xff0c;因此&#xff0c;小强老师给大家写了这篇入门的javascript文章。从零…

torch版ResNet50(带有多输出)转c++ tensorrt

第一个最简单的lenet示例请参考这篇文章 一.torch阶段 测试图片: torch代码: # coding:utf-8 import torch from torch import nn from torch.nn import functional as F import torchvision import os import struct import time import cv2 import numpy as npdef main()…

新一轮全球“太空竞赛”正上演 争夺几万亿美元大蛋糕

来源&#xff1a;华尔街见闻摘要&#xff1a;太空竞赛不可避免受到民族自豪感的刺激和数万亿美元产业的诱惑。到2040年&#xff0c;摩根士丹利估计&#xff0c;太空经济规模将有1.1万亿美元&#xff1b;美国银行估计将达到2.7万亿美元。冷战时期的太空竞赛&#xff0c;又重新降…

抽象线程之Parallel类

该类定义了并行的For和Foreach方法&#xff0c;Parallel类使用多个任务&#xff0c;因此需要多个线程来完成这个作业 代码及简单注释如下&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; …

ubuntu16.04编译安装c++ opencv与vscode配置debug

一&#xff0e;编译安装c opencv 1.下载zip包 本文安装的是opencv3.4.3,下载链接&#xff0c;以Sources方式下载zip包&#xff0e; 2.安装依赖 sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat…

【年终盘点】2018年十大新型机器人

来源&#xff1a;网易智能摘要&#xff1a;2018年&#xff0c;机器人行业迎来了丰收——随着新型机器和高级人工智能的出现&#xff0c;各类机器人都在各自的领域都取得了重大的进步&#xff0c;例如家用机器人、工业机器人、医疗机器人、生物机器人和玩具机器人。今年&#xf…

leetcode hot100(第二部分) + python(c++)

50-1. 乘积最大子数组 思路1:找到状态转移方程: maxf[i]:表示在i处最大连乘数 minf[i]:表示在i处最小连乘数 maxf[i] max(nums[i],nums[i]*minf[i-1],nums[i]*maxf[i-1]) minf[i] min(nums[i],nums[i]*minf[i-1],nums[i]*maxf[i-1]) #maxf[i]:表示在i处最大连乘数 #minf[i]…

自动驾驶真的会来得那么快吗:关于自动驾驶的7个疑问

来源&#xff1a;资本实验室自动驾驶汽车的研发已经成为全球热潮。无论是像谷歌、百度、Uber这样的互联网巨头&#xff0c;还是丰田、通用、福特这样的老牌汽车制造商&#xff0c;都在以大量的人力、资金向自动驾驶领域下注。然而&#xff0c;无论是Waymo推出首个自动驾驶汽车商…

安卓学习第9课——计时器chronometer

今天学习了钟表及计时器。。 我觉得AnalogClock和DigitalClock直接使用就可以。唯一需要知道的就是AnalogClock是可以修改表盘和分针时针的。 方法是android:dail及android:hand_minute和hand_hour. 下面介绍的是计时器的用法。 首先xml中只要放入一个chronometer和一个按钮即可…