make编译

直接执行make

生成.o文件,和target 可执行文件。

makefile

一下内容转自:

https://blog.csdn.net/bytxl/article/details/38614857

当前目录下有多个C文件,每个C文件有一个main函数,把这些C文件分别编译成对应名字的可执行文件。

注意不是把当前目录下所有C文件编译成一个可执行文件

CFLAGS = -g -Wall -Werror
LDFLAGS = -lpthread

src = $(wildcard *.c)
target = $(patsubst %.c, %, ${src})

.PHONY: all clean

%.o:%.c
    $(CC) ${CFLAGS} -c -o $@
%:%.o
    $(CC) ${LDFLAGS} -o $@

all: ${target}

clean:
    rm -f ${target}

或者

CFLAGS = -g -Wall -Werror
LDFLAGS = -lpthread

src = $(wildcard *.c)
target = $(patsubst %.c, %, ${src})

.PHONY: all clean

%:%.c
    $(CC) ${CFLAGS} ${LDFLAGS} $^ -o $@

all: ${target}

clean:
    rm -f ${target}

注意下面的makefile是不正确的

CFLAGS = -g -Wall -Werror
LDFLAGS = -lpthread

src = $(wildcard *.c)
target = $(patsubst %.c, %, ${src})

.PHONY: all clean

target: ${src}
    $(CC) ${CFLAGS} ${LDFLAGS} ${src} -o $@

clean:
    rm -f ${target}

下面的也是不正确的

CFLAGS = -g -Wall -Werror
LDFLAGS = -lpthread

src = $(wildcard *.c)
target = $(patsubst %.c, %, ${src})

.PHONY: all clean

%:%.c
    $(CC) ${CFLAGS} ${LDFLAGS} $^ -o $@

clean:
    rm -f ${target}
虽然上面这个 Makefile不能使用命令

make

一次把所有.c生成相应的可执行文件,但是使用

make 某个.c文件名前面部分

是可以生成这个可执行文件的。

例如:

目录下存在test.c,使用上面的Makefile,用如下命令就可以生成test可执行文件:

make test

原因,没找到确切的解释,自己推测如下(如果有错请高手指点):

%:%.c  是一个模式规则,“%”的替换是在规则的其他变量和函数引用扩展完成之后进行的,变量和函数的展开一般发生在make读取Makefile时,而模式规则中的“%”则发生在make的执行过程。所以用make命令只能找到clean这个目标。
————————————————
版权声明:本文为CSDN博主「bytxl」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bytxl/article/details/38614857

make 编译可执行相关推荐

  1. 如何用C#动态编译、执行代码

    在开始之前,先熟悉几个类及部分属性.方法:CSharpCodeProvider.ICodeCompiler.CompilerParameters.CompilerResults.Assembly. 一 ...

  2. 在Linux系统下编译并执行C++程序

    引言 为什么要在Linux下写程序? 首先要问一下自己,为什么要写这个程序. 如果我们写一个运行在windows平台的应用程序,那么用Linux写肯定是傻瓜或者强迫症,因为在windows平台调试wi ...

  3. JVM学习笔记(二)------Java代码编译和执行的整个过程

    Java代码编译是由Java源码编译器来完成,流程图如下所示: Java字节码的执行是由JVM执行引擎来完成,流程图如下所示: Java代码编译和执行的整个过程包含了以下三个重要的机制: ● Java ...

  4. 【开发环境】Ubuntu 中使用 VSCode 开发 C/C++ ⑤ ( tasks.json 中的 args 数组配置分析 | 编译并执行 C++ 程序 )

    文章目录 一.tasks.json 中的 args 数组配置分析 二.编译并执行 C++ 程序 可以参考官方提供的文档 : https://code.visualstudio.com/docs/cpp ...

  5. JavaScript的预编译及执行顺序

    从JavaScript引擎的解析机制来探索JavaScript的工作原理,下面我们以更形象的示例来说明JavaScript代码在页面中的执行顺序. 如果说,JavaScript引擎的工作机制比较深奥是 ...

  6. Linux环境下如何编译和执行c程序

    1 单个文件的编译和执行 创建main.c文件,内容如下: 编译: 执行: 2 多个文件的编译和执行 创建sum.c文件,内容如下: 创建main.c文件,内容如下: 编译: 生成可执行文件,文件名为 ...

  7. 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类

    一.背景 最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法. 二.测试过程 1.父类代码 1 pa ...

  8. Boost:使用静态c ++内核语言扩展以进行编译和 执行模板化的c ++内核

    Boost:使用静态c ++内核语言扩展以进行编译和 执行模板化的c ++内核 实现功能 C++实现代码 实现功能 使用静态c ++内核语言扩展以进行编译和 执行模板化的c ++内核 C++实现代码 ...

  9. 60.Java 代码编译和执行的整个过程

    60.Java 代码编译和执行的整个过程 60.Java 代码编译和执行的整个过程 Java 代码编译是由 Java 源码编译器来完成,流程图如下所示: Java字节码的执行是由 JVM 执行引擎来完 ...

最新文章

  1. 40题刷爆Keras,人生苦短我选Keras
  2. php提交飞信,php发送飞信消息
  3. python idle 清屏问题的解决
  4. 办公自动化-幻灯片中插入图片与表格-pptx模块-0225
  5. sqlserver 性能计数器的问题
  6. [置顶] 我行贿了 I Paid A Bribe! --印度IPAB中国官方网站 - 民间反腐网站“我行贿了”网址大盘点...
  7. 20190904:(leetcode习题)合并两个有序数组
  8. KeyShot实例教程教你怎么模拟水面效果
  9. Idea中@Autowired 黄色波浪线问题,注入类显示红色波浪线,去除重复代码导致的波浪黄线,去除xml文件里sql语句的黄色行背景色,问题解决
  10. 【雷达测角】基于matlab和差波束加权【含Matlab源码 1674期】
  11. 毕业好几年,改行学IT哪个岗位容易上手?
  12. 计算机软著发明,时健
  13. 这家安全厂商避谈“软件定义”,我却要为它的“反骨”点赞
  14. 统筹规划题:“服装店4个小组15天最多做多少套衣服裤子”的思路
  15. Mybatis 映射文件
  16. linux 命令连接符,Linux 中命令链接操作符的十个最佳实例
  17. php实训日记200字,做实验日记200字
  18. Apollo配置中心使用篇
  19. mysql日期类型计算机_2014年计算机二级考试MySQL试题 1
  20. GAMES104-游戏引擎的动画基础

热门文章

  1. shell去除字符串前所有的0
  2. Linux的mount命令简介
  3. Android 实现歌曲播放时歌词同步显示
  4. Linux概念架构的理解
  5. 在 CentOS 7.0 上源码安装 Xen 4.5
  6. 定义一个不能被拷贝的类
  7. ubuntu16.04 彻底卸载MySQL
  8. java.vm.info_深入理解java虚拟机
  9. cdi name 日志_CDI 2.0更新
  10. 本地笔记软件_笔记软件obsidian重大更新