C++命令行多文件编译(g++)

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

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

(1)g++简介

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

g++ -v

g++ -v
结果如下:
在这里插入图片描述

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

(2)编译单个文件

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

1 #include <iostream>
2 using namespace std;
3 
4 int main(){
5     cout << "Hello World!" << endl;
6 }

View Code
用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 = 1;
    while(n > 1)
        ret *= n--;
    return ret;
}

int static_val()
{
    static int count = 1;
    return ++count;

}

int mabs(int n)
{
    return (n > 0) ? n : -n;
}

定义主函数文件main.cpp:

#include <iostream>
#include "header.h"
using namespace std;


int main()
{
    int j = fact(5);
    cout << "5! is " << j << endl;
    for(int i=1; i<=5; ++i)
    {
        cout << static_val() << " ";
    }
    cout << endl;
    cout << "mabs(-8) is " << mabs(-8) << endl;
    return 0;
}

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

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

输入下面两行分别编译两个文件:(注意此处 g++ -c 是用于先编译,还没链接呢。)

g++ -c func.cpp
g++ -c main.cpp
上面编译完成后生成两个文件:func.o,main.o

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

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

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值