首先建立好自己的工作目录

然后创建主函数main.cpp

接着写sinValue.h和cosValue.h函数文件

先按照传统方式进行编译运行

然后用make,先写makefile文件

将原来生成的文件删除,运行make

搞定,下面多尝试几个make的基本语法与变量。

基本的 makefile 守则是这样的:

目标(target): 目标档1 目标档2
<tab>   gcc -o 欲创建的运行档 目标档1 目标档2

在 makefile 当中的 # 代表注解;

    <tab> 需要在命令行 (例如 gcc 这个编译器命令) 的第一个字节;

    目标 (target) 与相依文件(就是目标档)之间需以『:』隔开。

继续上面的程序进行测试,在makefile中添加:

以新的target(clean)测试看看运行make的结果

如果想先清楚目标档再编译main这个程序的话,就可以输入【make clean main】:

可以像shell script来简化makefile:

与 bash shell script 的语法有点不太相同,变量的基本语法为:

1、变量与变量内容以『=』隔开,同时两边可以具有空格;

    2、变量左边不可以有 <tab> ,例如上面范例的第一行 LIBS 左边不可以是 <tab>;

    3、变量与变量内容在『=』两边不能具有『:』;

    4、在习惯上,变量最好是以『大写字母』为主;

    5、运用变量时,以 ${变量} 或 $(变量) 使用;

    6、在该 shell 的环境变量是可以被套用的,例如提到的 CFLAGS 这个变量!

    7、在命令列模式也可以给予变量。

环境变量取用的守则是这样的:



    1、make 命令列后面加上的环境变量为优先;

    2、makefile 里面指定的环境变量第二;

    3、shell 原本具有的环境变量第三。

此外,还有一些特殊的变量需要了解的:



    $@:代表目前的标的(target)

所以我也可以将 makefile 改成:

Linux - 用make进行工程编译的更多相关文章

  1. Linux下通过源码编译安装程序(configure/make/make install的作用,然后在/etc/profile文件里修改PATH环境变量)

    一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在 ...

  2. nixyx —— 一个小巧的项目工程/编译文件生成器(构建系统?)

    恩..nixyx确实算不上是一个构建系统. 所谓构建系统,比如GNU的Autotools,那是一套很完整的构建体系,包括了程序的配置,编译和安装三大部分. 类似的软件还有:google的gyp.腾讯的 ...

  3. [转]Caffe在Linux下的安装,编译,实验

    Caffe在Linux下的安装,编译,实验  原文地址:http://www.cnblogs.com/evansyang/p/6150118.html 第一部分:Caffe 简介 caffe是有伯克利 ...

  4. 【转载】在Linux中使用VS Code编译调试C++项目

    原文:在Linux中使用VS Code编译调试C++项目 最近项目需求,需要在Linux下开发C++相关项目,经过一番摸索,简单总结了一下如何通过VS Code进行编译调试的一些注意事项. 关于VS ...

  5. Linux环境PostgreSQL源码编译安装

    Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...

  6. linux kernel 模块多文件编译

    /*************************************************************************** * linux kernel 模块多文件编译 ...

  7. Linux下librdkafka客户端的编译运行

    Linux下librdkafka客户端的编译运行 librdkafka是一个开源的Kafka客户端C/C++实现,提供了Kafka生产者.消费者接口. 由于项目需要,我要将Kafka生产者接口封装起来 ...

  8. eclipse中多个工程编译到同一个目录下

    1.点击link source  2.选择Java(ps:Java文件目录)或者resource(ps:配置文件目录)  3.最后结果,然后使用project中的clean进行编译,就可以把两个工程编 ...

  9. Linux下C++/C的编译调试

    这几天因为任务的原因我需要在ubuntu下编写程序.因此恶补了许多linux程序编写的知识.我分以下几个方面总结我所学的知识. gcc,g++,make命令的使用 gdb 调试 VScode的使用 c ...

随机推荐

  1. Hibernate之配置文件

    可持久化对象有以下三种状态: 临时状态(Transient):对象在保存进数据库之前为临时状态,这时数据库中没有该对象的信息,如果没有持久化,程序退出后临时状态的对象信息将会丢失.随时可能被垃圾回收器 ...

  2. 多线程之Java线程阻塞与唤醒

    线程的阻塞和唤醒在多线程并发过程中是一个关键点,当线程数量达到很大的数量级时,并发可能带来很多隐蔽的问题.如何正确暂停一个线程,暂停后又如何在一个要求的时间点恢复,这些都需要仔细考虑的细节.在Java ...

  3. T-SQL 中的CROSS JOIN用法(半翻译)

    突然发现个很吊的链接,我们来看看学习数据库要做些什么,胆小慎点:DBA工作内容!!!! 今天来翻译一篇关于T-SQL的文章,本文可供微软认证70-461:QueryingMicrosoft SQL S ...

  4. 4.0、Android Studio配置你的构建

    Android构建系统编译你的app资源和源码并且打包到APK中,你可以用来测试,部署,签名和发布.Android Studio使用Gradle,一个高级的构建套件,来自动化和管理构建进程,同时可以允 ...

  5. mqtt推送介绍

    方案1.使用GCM服务(Google Cloud Messaging) 简介:Google推出的云消息服务,即第二代的C2DM. 优点:Google提供的服务.原生.简单,无需实现和部署服务端. 缺点 ...

  6. 06_NoSQL数据库之Redis数据库:Redis的高级应用之登录授权和主从复制

     Redis高级实用特征 安全性(登录授权和登录后使用auth授权) 设置客户端连接后进行任何其他指定前需要使用的密码. 警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户 ...

  7. 03 RadioButton 单选按钮

    >概念:从多个互斥选项中选择一个  如果是选项全部展开  RadioButton  不是展开的Spinner(下拉列表)     >属性: android:checked="tr ...

  8. 【IOS 开发】Object - C 语法 之 流程控制

    1. if 条件语句 if 表达式 : 表达式是一个 整型 或者 布尔型, 0 或者 FALSE 为 FALSE, 大于 0 为 TRUE; 代码示例 : /********************* ...

  9. 最简单的基于FFmpeg的AVDevice例子(读取摄像头)

    =====================================================最简单的基于FFmpeg的AVDevice例子文章列表: 最简单的基于FFmpeg的AVDev ...

  10. Ubuntu 安装 Mysql 5.6 数据库

    Ubuntu 安装 Mysql 5.6 数据库 1)下载: mysql-5.6.13-debian6.0-x86_64.deb http://dev.mysql.com/downloads/mirro ...