使用gcc命令编译多个文件
使用g++命令直接一次性编译多个文件
这里以简单的HelloWorld程序为例,假设我们一共有三个文件:main.cpp,HelloWorld.cpp和HelloWorld.h. 其中HelloWorld.cpp中有一个打印HelloWorld的程序并在.h文件中声明,main.cpp通过包含.h文件调用打印HelloWorld程序。 准备文件。
我们可以直接在cmd命令行中输入如下命令进行编译(直接在文件夹的目录栏中输入cmd即可打开cmd并定位到该文件夹):
g++ main.cpp HelloWorld.cpp -o hello
这时就会在同一文件夹下生成一个hello.exe文件。
使用g++命令分别编译和链接
在cmd命令中依次输入如下命令:
g++ -c main.c
g++ -c HelloWorld.c
g++ main.o HelloWorld.o -o hello
可以看到在文件夹中除了生成一个hello.exe文件之外,还有前两个步骤生成的中间文件——main.o和HelloWorld.o. 如果不想要中间文件接下来还可以使用 ``del main.o HelloWorld.o`` 将中间文件删除(del是windows下的命令)。
使用makefile文件
对于一个大型的项目,里面可能有很多个文件。这时候如果每次编译都使用上面的方法显然是不切实际的。 这时候我们可以借助makefile文件,只需要写一次就可以进行多次编译,如果文件有增删直接修改makefile文件即可。 首先新建一个makefile文件(注意没有后缀名),然后用notpad++等文本编辑器在其中加入以下代码:
# 文件名: makefile
SHELL=cmd.exe
OBJS=main.o HelloWorld.o
main: $(OBJS)
g++ -o hello $(OBJS)
main.o:main.cpp HelloWorld.h
g++ -c main.cpp
HelloWorld.o: HelloWorld.cpp HelloWorld.h
g++ -c HelloWorld.cpp
clean:
del $(OBJS)
需要注意的是在windows下需要将SHELL切换到windows下的cmd,不然不能运行del命令。 我的电脑上安装的是MinGW,由于我需要使用MinGW/bin下的mingw32-make命令,所以需要将bin文件夹添加到环境变量里。 然后在cmd命令行中输入如下命令:
mingw32-make
这时候就会在文件夹中生成hello.exe文件和相关的中间文件。如果需要删除中间文件再执行如下命令即可:
mingw32-make clean
如果我们需要自动编译多个文件同时编译过后自动删除中间文件,最后给出编译完成的提示信息,我们也可以使用windows下的bat脚本。 编写bat脚本如下:
:: 文件名: make.bat
echo off
mingw32-make
echo HelloWorld编译完毕
mingw32-make clean
echo 删除中间文件完毕 ::执行编译后的文件
hello.exe
echo 文件执行完毕
之后我们直接在cmd命令行中输入 make ,批处理文件就会自动帮我们执行相关命令并给出提示:

这样我们在编写完文件以后,只需要一个 cmd 和一个 make 就可以让编译、删除中间文件、执行输出文件自动执行了。
使用gcc命令编译多个文件的更多相关文章
- Keil5.15使用GCC编译器链接.a库文件
我们知道,当使用第三方的代码时,人家有可能会扔个Lib文件给你.这时候,别人仅仅要提供header文件给你,则你就能够通过Lib文件及header的函数声明,对Lib中的函数进行调用.在Keil中假设 ...
- gcc编译时头文件和库文件搜索路径
特殊情况:用户自定义的头文件使用#include"mylib"时,gcc编译器会从当前目录查找头文件 一.头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始( ...
- [vim配置]windows下在vim中使用gcc/g++编译调试c/cpp文件
在Linux里面混了一个多月,vim编程用得甚爽.无奈前天将Linux里面的编程文件夹误删,而技术不精无法找回,悲痛欲绝.再者,无限怀念windows里面的游戏,并觉得现在在Linux里面也学不到什么 ...
- gcc命令以及makefile文件
(一)makefile里涉及到的gcc命令 gcc -I./inc:指定头文件寻找目录 将按照 ./inc --> /usr/include --> /usr/local/include的 ...
- Linux下gcc编译生成动态链接库*.so文件并调用它(注:执行Test程序后无需用export 命令指定.so库文件路径:方法在文中下方;)
动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一 ...
- 在windows下使用cmd命令行对java文件进行编译和执行
windows下利用cmd命令行可以调用jdk里的javac.exe和java.exe对java文件进行编译和执行,前提是jdk已成功安装并正确配置相关环境变量 相关配置链接:java基础学习总结—— ...
- 使用ar命令删除iOS静态库重复编译的.o文件
关于 xcode引入第三方静态类库 duplicate symbol _OBJC_XXX 重复编译错误 看这里 http://www.cnblogs.com/cocoajin/p/3917709.ht ...
- 使用javac命令编译java文件。
今天想学习一下web services的知识,在网上找了一个教程,里面写了一个web services客户端调用,在cmd下执行的,但是没有给出用javac编译的细节.所以自己就借着这个机会学了一下: ...
- linux gcc 编译时头文件和库文件搜索路径
一.头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始 ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INC ...
随机推荐
- DRF 认证、权限、限制
DRF 认证.权限.限制 认证: 定义一个用户表和一个保存用户的Token表 # ======================day96======================= class ...
- 使用GSON工具实现json和其他数据格式间转换
1 package gson; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import com.google.gson. ...
- 记录添加mvn命令,以及安装jar包到本地仓库
安装版的maven,没有mvn命令,需要先设置环境变量,添加%MAVEN_HOME% =D:\apache-maven-3.3.9path 中添加 %MAVEN_HOME%/bin即可 安装下载好的j ...
- Spring使用Quartz定时调度Job无法Autowired注入Service的解决方案
1)自定义JobFactory,通过spring的AutowireCapableBeanFactory进行注入,例如: public class MyJobFactory extends org.s ...
- Tesseract-OCR的使用记录
参考: http://www.cnblogs.com/cnlian/p/5765871.html http://www.cnblogs.com/wzben/p/5930538.html 1.下载 Te ...
- 浅谈C#堆栈与托管堆的工作方式(转)
C#初学者经常被问的几道辨析题,值类型与引用类型,装箱与拆箱,堆栈,这几个概念组合之间区别,看完此篇应该可以解惑. 俗话说,用思想编程的是文艺程序猿,用经验编程的是普通程序猿,用复制粘贴编程的是2B程 ...
- 如何创建数据库以及MySQL增删改查命令的简单运用
在已经安装好MySQL的前提下 1.在Windows打开命令提示符窗口,输入命令启动MySQL命令行工具并登入root用户:mysql -h localhost -u root -p 2.输入密码后, ...
- idea搭建ssm框架
1.file-->new-->project-->maven.... 2.建立后的目录: 3.pom.xml依赖建立: <?xml version="1.0" ...
- 6993: Dominoes(纯bfs)
题目描述Orz likes to play dominoes. Now giving an n*m chessboard and k dominoes whose size are 1*2, Orz ...
- Java学习--泛型
个人理解,所谓的泛型就是将数据类型像参数(称为类型参数或者泛型参数)一样传入类,接口或者方法中,这个类型参数可以当作普通的数据类型,进行变量的声明(成员变量,局部变量(包括方法参数)),指明返回值类型 ...