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

然后创建主函数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. Sqoop-1.4.5用户手册

    本文以Sqoop User Guide (v1.4.5)为主,对Sqoop-1.4.5的用户手册进行翻译,同时会结合一些实际操作中的注意事项一并写入.由于原文档很长,本文首先会以实际使用到的部分为主, ...

  2. 在Linux上的虚拟机上启动Oracle上报ORA-00845: MEMORY_TARGET not supported on this system的问题解决

    解决办法: 1.将当前虚拟机的内容调整大一些(以下转载:http://jingyan.baidu.com/article/414eccf67b8baa6b421f0a60.html) VMware虚拟 ...

  3. Linux--Web应用服务和MySQL数据库

     (1)  WWW是一种交互式图形界面的Internet服务,具有强大的信息连接功能,是 人们在网上查找.浏览信息的主要手段.它使得成千上万的用户通过简单的 图形界面就可以获取各个大学.组织.公司 ...

  4. 1.搜索引擎的历史,搜索引擎起步,发展,繁荣,搜索引擎的原理,搜索技术用途,信息检索过程,倒排索引,什么是Lucene,Lucene快速入门

     一: 1  搜索引擎的历史 萌芽:Archie.Gopher Archie:搜索FTP服务器上的文件 Gopher:索引网页 2  起步:Robot(网络机器人)的出现与spider(网络爬虫) ...

  5. 18 Loader 总结

    1. Loader 装载器 Android3.0以后出来的 它可以使Activity和Fragment 异步加载数据 变得简单(Loader里封装了AsyncTask) Loader特点: 1,对每一 ...

  6. Hibernate超简单多表操作

    所谓一对多映射 在数据库中我们通常会通过添加外键的方式将表关联起来,表现一对多的关系. 而在Hibernate中,我们则要通过在一方持有多方的集合来实现,即在"一"的一端中使用元素 ...

  7. Maven原型骨架及常见问题

    关于Maven原型工程的制作就不在这里详细介绍了,具体细节请参考之前的文章:定制Maven原型生成项目 下面分享制作和使用Maven原型工程时碰到的常见问题,以及原型的上传和使用方法. 1.模块路径问 ...

  8. 论文系统Step1:从日志记录中提取特定信息

    论文系统Step1:从日志记录中提取特定信息 前言 论文数据需要,需要实现从服务器日志中提取出用户的特定交互行为信息.日志内容如下: 自己需要获取"请求数据包一行的信息"及&quo ...

  9. 为什么很多类甚者底层源码要implements Serializable ?

    为什么很多类甚者底层源码要implements Serializable ? 在碰到异常类RuntimeException时,发现Throwable实现了 Serializable,还有我们平进的ja ...

  10. iOS中 断点下载详解 韩俊强的博客

    布局如下: 基本拖拉属性: #import "ViewController.h" #import "AFNetworking.h" @interface Vie ...