在Windows命令行中编译运行C/C++程序

此处运行环境是在Windos下,运行cmd命令进入DOS界面,Linux中的运行过程有做说明!

首先,如果想在DOS窗口中进行C/C++代码的编译,则需要先配置gcc的环境变量。

目录

 1、使用g++进行编译链接

第一步:在DOS界面中进入到该目录中:

第二步:用g++/gcc + 文件名,注意文件名要写出扩展名

第三步:直接输入a.exe并回车,即可执行由HelloWorld.cpp编译链接生成的程序(Linux下,则使用 ./a.out 运行)

2、常见问题(编译过程)



 1、使用g++进行编译链接

为了可以方便观察,这里我使用一份Helloworld代码(HelloWorld.cpp)

#include 

using namespace std;


int main(){
	
	cout << "HelloWorld!" << endl;
	
	system("pause");
	return 0;
	
}

 

HelloWorld.cpp文件的位置处于 ' D:\Program Files (x86)\CPlusPlusProject ' 目录下

 

第一步:在DOS界面中进入到该目录中:

           在Windows命令行中编译运行C/C++程序_第1张图片

 

第二步:用g++/gcc + 文件名,注意文件名要写出扩展名

注意:1. 如果是C++源代码(.cpp文件)使用g++命令;如果为C语言的源代码,即可使用g++,也可使用gcc。

           2. 如果想要使用gdb调试,则可以是使用 g++ -g “文件名.cpp”。使用‘-g’后可执行程序将会包含调试信息

             在Windows命令行中编译运行C/C++程序_第2张图片

此时,通过编译之后,会自动生成一个a.exe的可执行文件(Windows下会默认生成a.exe,Linux下默认生成a.out)

              在Windows命令行中编译运行C/C++程序_第3张图片

 

第三步:直接输入a.exe并回车,即可执行由HelloWorld.cpp编译链接生成的程序(Linux下,则使用 ./a.out 运行

            

             可以观察到,此时即可运行出想要的结果。

如果代码量过大,或者进入死循环,可以使用 Ctrl+z 终止程序

 

2、常见问题(编译过程)

如果直接使用 g++ 文件名.cpp 进行编译,则不会看见编译链接的过程,而且最后生成的可执行文件为 a.exe,而不是想要的 文件名.exe。

 解决方案:

使用g++ -o 文件名 文件名.cpp (g++ -o 文件名.exe 文件名.cpp)进行编译。(此时的编译过程包括了预处理、编译、汇编、链接过程)

例如这里为:g++ -o HelloWorld.exe HelloWorld.cpp (如果想要使用GDB调试,可以使用gcc -g HelloWorld.cpp -o HelloWorld)

            在Windows命令行中编译运行C/C++程序_第4张图片

 此时,可以观察到,编译后出现了HelloWorld.exe可执行文件。

注解:1、如果运行程序时需要在命令行中输入过多的测试数据(或需要进行多次数据测试),则可以事先将测试数据保存在 .txt文本文档中

          2、 运行的时候直接读取.txt中的数据即可。(需要注意的是,.txt中的数据格式需要按照自己编写的程序中输入的规定)

          3、 如果在文本文档中读取测试数据的结果,则可以直接保存到 想要的文本文档 中。

示例:(输入数据为:input.txt  ; 输出数据为:output.txt)

            


 补充:

如果你仔细看一下保存源代码的文件夹,你就会发现,当我们用IDE集成环境一键编译运行的时候,会出现 *.o文件,而此时用命令行编译运行没有生成 *.o文件,如果你想要 *.o 文件,那么你就需要在编译的时候添加一个 -c选项,这样就会只生成一个 *.o文件, *.o文件可以抽取出来,做成库文件 。(.o文件为目标文件(有的为.obj文件))

而具体的编译链接过程为(下面进行具体介绍)

 补:DOS下编译汇编的过程(生成.o文件)

.o文件为目标文件(有的为.obj文件)

            在Windows命令行中编译运行C/C++程序_第5张图片

        对.o文件进行链接的过程

            

            在Windows命令行中编译运行C/C++程序_第6张图片

 

以上内容仅为我个人见解,该博客也是为了解决我在日常生活中编程所遇到的问题,以便以后可以快速查阅。如果有错误,请多多包涵!若能指出,则感激不尽!! 

如需转载,请注明文章出处,谢谢!!!

 

你可能感兴趣的:(C/C++)