在刚开始学Java时用命令行进行编译代码。而C++一直在用IDE, 这次尝试下命令行编译。vs下也可以用cl.exelink.exe等命令来进行编译

但这次是通过安装MinGW来学习命令编译,主要用到g++。

(1)g++简介

通过下面命令可查看g++版本

g++ -v

结果如下:

也可以通过g++ --help 查看更多的可用命令。


(2)编译单个文件

编写单个文件的可执行程序代码hello.cpp如下

 #include <iostream>
using namespace std; int main(){
cout << "Hello World!" << endl;
}

用cmd打开该文件所在的相应文件夹,并输入:g++ hello.cpp

默认情况下,在该文件夹中将产生:a.exe, 此时在cmd中输入a,就可以看到输出结果。

我们也可以自定义产生的可执行程序名,如test.exe, 我们只要输入:g++ hello.cpp  -o test

然后就得到test.exe文件,在cmd中输入test就能够得到结果,实验结果如下:


(3)编译多个文件

定义头文件header.h, 头文件包含3个函数声明:

int fact(int n);
int static_val();
int mabs(int);

定义函数定义文件func.cpp

#include "header.h"

int fact(int n)
{
int ret = ;
while(n > )
ret *= n--;
return ret;
} int static_val()
{
static int count = ;
return ++count; } int mabs(int n)
{
return (n > ) ? n : -n;
}

定义主函数文件main.cpp

#include <iostream>
#include "header.h"
using namespace std; int main()
{
int j = fact();
cout << "5! is " << j << endl;
for(int i=; i<=; ++i)
{
cout << static_val() << " ";
}
cout << endl;
cout << "mabs(-8) is " << mabs(-) << endl;
return ;
}

在同一个文件夹下编辑header.hfunc.cppmain.cpp后,就可以进行多个文件编译,注意到在命令行编译中似乎没有头文件什么事,

头文件只是起到声明的作用,因此只需编译两个*.cpp文件并链接就可以。

输入下面两行分别编译两个文件:

g++ -c func.cpp
g++ -c main.cpp

上面编译完成后生成两个文件:func.omain.o

之后通过链接就可以得到最终的可执行程序,输入下面命令:

g++ main.o func.o -o test

最终产生可执行程序test.exe, 可以直接在cmd中输入验证,结果如下:


ps: 似乎总在重复学习简单的东西,希望系统学习复习整理后,能够往前一步,学习更有趣、更高深的内容。

C++命令行多文件编译(g++)的更多相关文章

  1. 分布式进阶(十) linux命令行下载文件以及常用工具:wget、Prozilla、MyGet、Linuxdown、Curl、Axel

    linux命令行下载文件以及常用工具:wget.Prozilla.MyGet.Linuxdown.Curl.Axel 本文介绍常用的几种命令行式的下载工具:wget.Prozilla.MyGet.Li ...

  2. Ubuntu使用命令行打印文件

    Ubuntu使用命令行打印文件 正文 环境: Ubuntu 16.04.3 LTS HP Deskjet InkAdvantage 4648 准备步骤 安装Common UNIX Printing S ...

  3. 在远程登陆的主机上通过命令行源码编译安装 GNU M4、autoconf、automake 等程序

    由于实验需要,最近获得了一个实验室服务器的账号,平常主要通过 ssh 进行远程登陆进行实验.一方面,远程登录的机器只提供终端界面,一般只通过命令行进行任务操作:另一方面,由于是多人共享服务器,故而个人 ...

  4. C语言include预处理命令与多文件编译

    #include预处理命令几乎使我们在第一次接触C的时候就会碰到的预处理命令,可我现在还不怎么清楚,这次争取一次搞懂. 一.#include预处理指令的基本使用 预处理指令可以将别处的源代码内容插入到 ...

  5. Java命令行的基本编译运行

    1.编译 编写MyProgram.java文件,内容如下: public class MyProgram { public static void main(String[] args) { Syst ...

  6. FileZilla命令行实现文件上传以及CreateProcess实现静默调用

    应用需求:         用户在选择渲染作业时面临两种情况:一是选择用户远程存储上的文件:二是选择本地文件系统中的文件进行渲染.由于渲染任务是在远程主机上进行的,实际进行渲染时源文件也是在ftp目录 ...

  7. Windows中通过命令行新建文件夹、新建文件,和一些常用命令

    新建文件 和Linux不太一样,Linux中的touch和vi命令创建新文件的方法都不能用了,在windows命令行下得用type nul>文件名.后缀名来创建: F:\study\vue\wo ...

  8. 使用SSH命令行传输文件到远程服务器

    以前一直在windows下用SSH Secure Shell连接远程服务器,它自带了一个可视化的文件传输工具,跟ftp差不多 但是它也存在一个缺陷,不支持编码的选择,遇到utf8就自动乱码了,另外ma ...

  9. PHP调用Linux的命令行执行文件压缩命令&&创建文件夹修改权限

    一开始,我和普通青年一样,想到用PHP内置的 ZipArchive纠结的是环境上没安装zip扩展,想采用用PHP调用Linux的命令行 ,执行压缩命令,感兴趣的朋友可以了解下,希望本文对你有所帮助 前 ...

随机推荐

  1. 云cassandra 重磅发布dynamodb特性

    云cassandra全新发布dynamodb特性 nosql主力数据库再上新台阶 9月阿里云cassandra产品发布,具体参考阿里云全球首发云Cassandra服务.迄今为止,已有上百大B客户开通了 ...

  2. 绘制窗体渐变背景的函数[delphi]

    绘制窗体渐变背景的函数,三个参数分别代表起始颜色,终止颜色,绘制方向procedure TForm1.Draw(StartColor:TColor;EndColor:TColor;Direction: ...

  3. Delphi ADOQuery

    Delphi ADOQuery procedure TForm1.Button1Click(Sender: TObject); var A: Array of String;//定义动态数组 Inde ...

  4. APC注入DLL(win7下有问题)

    void APCKernelRoutine(PKAPC pKAPC, PKNORMAL_ROUTINE pUserAPC, PVOID pContext, PVOID pSysArg1, PVOID  ...

  5. django中filter()和get()的区别

    在django中,我们查询经常用的两个API中,会经常用到get()和filter()两个方法,两者的区别是什么呢? object.get()我们得到的是一个对象,如果在数据库中查不到这个对象或者查找 ...

  6. 使用Beyond Compare作为Perforce默认的文件比较工具

    使用perforce自带的文件比较工具有时候会遇到乱码的情况,如下: 暂时不知道如何解决上述问题,因此想换个文件比对工具,比如Beyond Compare. 设定位置:Edit->prefere ...

  7. IOS中input光标跑偏问题的解决方法

    ios端兼容input光标高度处理 在最近的项目中遇到一个问题,input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上 当点击输入的时候,光标的高度和父盒子的高度一样.造成的原因就是给父盒子 ...

  8. Day 11:函数装饰器

    在说装饰器前,先说一个东西,再Python里,有一个 一切皆对象,一切皆变量. 例: def hello(name="sunjinyao"): return "hi &q ...

  9. 调用第三方jar包_md5加密

    vars.put是转换成jmeter格式

  10. iphone11系统输入框的光标位置不正常

    本人的系统是11.3的是正常的,却发现测试机的11.1和11.2的光标位置在输入框的下边.百度一下,很多人有同样的问题,在此记录一下 解决办法一: //弹框弹出后执行如下代码 $('body').cs ...