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中,存在系统默认的自动化变量

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

[email protected]:代表目标

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

改写:

hello:main.o func1.o func2.o

  gcc $^ -o [email protected]

4、杂项

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

hello:hello.c

  @gcc $^ -o [email protected]

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

002编程基础----makefile

时间: 2024-12-31 06:11:24

002编程基础----makefile的相关文章

第十天:shell编程基础与编写Makefile

一:shell编程基础 shell定义:shell是一个作为用户与linux系统间接口的程序.它允许用户向操作系统输入需要执行的命令.shell有很多中,linux系统中shell为bash. shell编程可以看作是一堆命令的集合.和windows中的bat程序类似的脚本程序.为解释性语言. 第一个shell程序是判断两个数字的大小. 1 #!/bin/bash 2 3 num1=10 4 num2=9 5 6 if test $num1 -gt $num2 7 then 8 echo $nu

LINUX下C语言编程基础

实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 二.实验步骤 1. 快捷键 Ubuntu中: 2. vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人

s_linux C 编程基础

linux 下进行C编程基础 Table of Contents 1. 源程序的编译 2. 简单Makefile 的编写 3. 程序库的链接 4. 程序的调试 5. 头文件和系统求助 1 源程序的编译 在linux 下,如果要编译一个C源程序,我们要使用 GNU 的gcc 编译器. 下面我们以一个例子说明如何使用 gcc 编译器. 如下代码示: #include <stdio.h> int main(int argc, char **argv) { printf("hello wor

QT_编程基础

简单介绍 Qt是一个由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.它既能够开发GUI程式,也可用于开发非GUI程式,比方控制台工具和server. Qt是面向对象语言,易于扩展,而且同意组件编程.Qt是一个著名的C++库,使用Qt,在一定程度上让你获得的是一个"一站式"的服务. Qt 的良好封装机制使得 Qt 的模块化程度很高,可重用性较好,对于用户开发来说是很方便的. Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件之间

socket编程基础3

服务器端尽可能使用RUSEADDR. 在绑定之前尽可能调用setsockopt来设置SO_REUSEADDR套接字选项. 使用SO_REUSEADDR选项可以使得不必等待TIME_WAIT状态消失就可以重启服务器. fork()产生一个进程来处理客户端与服务器端之间的消息.父进程保持监听状态连接.accept返回多个已连接套接字! echocli.c #include <unistd.h> #include <sys/types.h> #include <sys/socket

python全栈开发从入门到放弃之socket网络编程基础

网络编程基础 一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 为何学习socket一定要先学习互联网协议: 1.首先:本节课程的目标就是教会你如何基于socket编程,来开发一款自己的C/S架构软件 2.其次:C/S架构的

linux下c编程 基础

1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 一:Vim 1.使用vim命令进入vim界面 $ vim practice_1.txt  或    $ vim 2.游标移动 按键 说明 h 左 l 右(小写L) j 下 k 上 w 移动到下一个单词 b 移动到上一个单词 3.进入插入模式 命令 说明 i

1.5编程基础之循环控制_29:数字反转

/* 1.5编程基础之循环控制 29:数字反转 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个整数,请将该数各个位上数字反转得到一个新数. 新数也应满足整数的常见形式,即除非给定的原数为零, 否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入 输入共 1 行,一个整数N. -1,000,000,000 ≤ N≤ 1,000,000,000. 输出 输出共 1 行,一个整数,表示反转后的新数. 样例输入 样例 #1: 123 样例 #2: -380 样例输出 样

网络编程基础

网络编程基础 1.套接字概念 Linux环境下使用套接字进行进程之间的通信.用过套接字的接口,其他进程的位置对于应用程序来讲是透明的.相互通信双方端点都有一个套接字,双方如果要进行通信,通过套接字建立桥梁,双方就可以通信了. 类似文件一样,套接字也有一个套接字描述符,应用程序可以像操作文件一样操作套接字.在进行网络通信的过程中,用户感觉就是在操作文件一样,这是Linux将外部设备抽象为一个文件的好处. 2.字节序 不同主机的体系结构不同,所采用的数据存储方式不同.网络中,进程之间的通信是跨主机的