Linux下C/C++程序开发管理(makefile)

一、引言

         从我们刚开始编写一个简单的C/C++ "Hello,World!",到将其编译、运行处结果—这部分工作IDE(集成开发环境)帮我们做了,包括语法错误检查,编译,调试,执行二进制程序。大部分时间我们只关注程序代码本身的编写,如何在Linux下对C/C++源代码的      进行有效管理,包括编译、链接、调试,make工具可以帮助我们完成这部分的工作。

二、从“Hello,World”说起

  1、执行单个源文件 

一个编写好的C或C++代码源程序需要通过编译、链接等步骤才能生成可执行的二进制文件。

例如:源文件:hello_world.c的源码为:

      

        [1] 第一步:编译生成目标文件 hello_world.o  (gcc-c hello_world.c )

        [2] 第二步:链接(这里只有一个hello_world.o)生成可执行文件hello_world(gcc -o hello_world hello_world.o)

  2、编译多个源文件

   例如:源文件:hello_world.c  say_ok.c 和main.c的源程序代码为:

            

         需要对包含这个三个源程序文件项目生成可执行文件main

     [1] 生成目标对象文件(OBJ):  

     [2] 链接生成可执行文件main:

三、管理多个源程序文件

         通常我们在编写项目的时候不可能只有一个源文件程序(main.c/main.cpp),一般情况下会有多个源文件(.c/.cpp)和头文件需要管理。正如前面所描述的如果有三个源文件hello_world.c, say_ok.c, main1.c,每次当我们对源码修改过后,都必须重新运行一遍所有的编译命令,试        想一 下如果文件不止三个,而是有很多个的时候......这将对程序员无疑是一个灾难。所以,我们必须寻求一个有效的的程序源码管理方式—make机制可以帮助我们解决这个问题。

1、make

make命令是系统管理员和程序员用的最频繁的命令之一。管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题。

   2、makefile文件书写格式

    目标:原料

    <Tab>加工方法

3、makefile实例

4、make常用选项

   [1]-B 选项: make 命令不会编译那些自从上次编译之后就没有更改的文件,但是,如果你想覆盖 make 这种默认的行为,可以使用-B选项

   [2]-g选项:调试选项,用于GDB调试

   [3]clean: 清除所有当前的对象文件好和执行文件

时间: 2024-10-15 04:55:53

Linux下C/C++程序开发管理(makefile)的相关文章

基于HBase Hadoop 分布式集群环境下的MapReduce程序开发

HBase分布式集群环境搭建成功后,连续4.5天实验客户端Map/Reduce程序开发,这方面的代码网上多得是,写个测试代码非常容易,可是真正运行起来可说是历经挫折.下面就是我最终调通并让程序在集群上运行起来的一些经验教训. 一.首先说一下我的环境: 1,集群的环境配置请见这篇博文. 2,开发客户机环境:操作系统是CentOS6.5,JDK版本是1.7.0-60,开发工具是Eclipse(原始安装是从google的ADT网站下载的ADT专用开发环境,后来加装了Java企业开发的工具,启动Flas

Linux下快速搭建php开发环境

php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XAMPP可快速搭建PHP开发环境.下载链接:https://www.apachefriends.org/download.html  进入下载界面选择XAMPP for Linux下载 启动终端输入命令  cd /下载xampp保存的路径.我的保存路径是:/home/coderose/下载.更改安装程

Linux下C/C++程序调试基础(GCC,G++,GDB,CGDB,DDD)

在写程序的时候,经常会遇到一些问题,比如某些变量计算结果不是我们预期的那样,这时我们需要对程序进行调试.本文主要介绍调试C/C++在Linux操作系统下主要的调试工具. 在Linux下写程序,C/C++主要的编译器有GCC/G++,ICC等,像我等穷码农,最喜欢GCC了,很大原因是他免费!所以,我们以GCC/G++为例介绍主要的调试工具. 分以下几个内容介绍: 1.调试之前的工作 2.选择调试工具 3.调试步骤 点我,请帮我投一票! 调试之前的工作 编译器在编译阶段需要产生可供调试的代码,才能被

Linux下取代top的进程管理工具 htop

一.htop 简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (for console or X terminals) and requires ncurses. Comparison between htop and top In 'htop' you can scroll the list vertically and horizontally to see all

Linux 程序设计学习笔记----Linux下文件类型和属性管理

转载请注明出处:http://blog.csdn.net/suool/article/details/38318225 部分内容整理自网络,在此感谢各位大神. Linux文件类型和权限 数据表示 文件属性存储结构体Inode的成员变量i_mode存储着该文件的文件类型和权限信息.该变量为short int类型. 这个16位变量的各个位功能划分为: 第0-8位为权限位,为别对应拥有者(user),同组其他用户(group)和其他用户(other)的读R写W和执行X权限. 第9-11位是权限修饰位,

linux下apache+mysql+php开发环境纯源代码编译搭建

linux下apache+mysql+php开发环境纯源代码编译搭建 记录一下我在fedora core 1下通过源代码编译出来的apache+mysql+php开发环境的全部过程 通常安装一台服务器当然使用rpm是最方便的,不需要考虑太多配置的问题,就可以轻松获得需要的环境了.不过rpm包互相关联的问题也不是这么容易解决. apache,mysql,php这三个应用从源代码编译安装还是比较简单的,配置参数不算复杂,而且没有太多的依赖关系,从源码编译出来的系统也比较稳定一些,方便未来打补丁和升级

Linux下执行Java程序

在linux下编译java程序,执行javac编译生成class文件时,在centos7终端输入如,javac hello.java    会提示未找到指令,但用java -verison测试环境变量是没问题的 百度了好久,说的很复杂,重新再linux配置环境变量,输入 vi /etc/profile进入,添加以下代码: export JAVA_HOME=/usr/local/jdk1.8.0_144 export PATH=$JAVA_HOME/bin:$PATH export CLASSPA

第9节课笔记-彻底实战IntelliJ IDEA 下的Spark程序开发

彻底实战IntelliJ IDEA 下的Spark程序开发下载IntelliJ IDEA 下载gitSpark源码下载:git clone git://github.com/apache/spark.git导入maven 工程 IntelliJ IDEA 启动的向导中Sacal下载需要下载,这是IDEA下载的,和系统层的不一样4.指定JDK1.8.x和Scala2.10.45.file ->Project Stucture 来设置工程lib 核心是添加Spark的jar6.添加Spark jar

两种在linux下创建应用程序快捷方式的方法

两种在linux下创建应用程序快捷方式的方法: A. 在桌面上创建快捷方式 B. 在应用程序菜单中添加快捷方式 在桌面上创建快捷方式 这是最简单的一种方法,在桌面上单击鼠标右键,会有一个“创建启动器”栏.这里我以为mplayer创建快捷方式为例说明: 名称-mplayer(或者你喜欢的任何名称,这个名称会出现在快捷图标的 下方) 命令-/usr/bin/gmplayer(这个是mplayer的gui应用程序的执行文件,跟 安装路径相关,可以通过which gmplayer找到) 图标-一般应用程