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

然后创建主函数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. 【C++】处理CSDN博文源码

    为了简化CSDN写博客的字体问题,给出一段代码,用于处理使用默认格式写完博客后,处理一次来解决字体问题. 代码片段 代码片段如下所示: #include <iostream> #inclu ...

  2. Swift中使用NSLog的问题

    在Swift中如果想要以如下方式执行NSLog,则编译器必定抱怨: class Foo {} NSLog("%@",Foo()) 因为Foo是原生Swift类不是继承自NSObje ...

  3. java.io.FileNotFoundException: ..\lib\commons-el.jar

    安装openfire成功后,启动遇到java.io.FileNotFoundException: ..\lib\commons-el.jar错误,并不是缺少了jar包,只需以管理员身份运行即可解决.

  4. Java基本语法-----java关键字

    1.1关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名.方法名.类名.包名. 1.2常见的关键字 备注: 不必死记硬背 ...

  5. FFmpeg源代码简单分析:libavdevice的avdevice_register_all()

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  6. 【一天一道Leetcode】#203.Remove Linked List Elements

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 我的个人博客已创建,欢迎大家持续关注! 一天一道le ...

  7. 开源项目——小Q聊天机器人V1.5

    小Q聊天机器人V1.0 http://blog.csdn.net/baiyuliang2013/article/details/51386281 小Q聊天机器人V1.1 http://blog.csd ...

  8. 操作系统处理内存时内存页为4k

    windows和unix处理内存时,一个内存页的大小都为4k. 测试代码 int main() { while (1) { int *p = (int *)malloc(1024); getchar( ...

  9. LiveBlox无需代码的开发工具--支持win macos ubuntu等开发环境--

    LiveBlox无需代码的开发工具-支持windows macos ubuntu. 强大 灵活 易于使用 视频简介:LiveBlox Develop Technology Without Coding ...

  10. try、catch、finally 块的关系

    try.catch.finally 块的关系 try块不能单独存在,后面必须跟catch块或者finally块. 三者之间的组合为:try-catch.try-catch-finally.try-fi ...