Linux系统下编译C++文件初级
1、在桌面上新建一个HelloWorld.cpp文件;

2、在HelloWorld.cpp文件中编写如下代码,输出“hello world”的字符串,代码非常简单,我就不做过多说明;

3、打开Ubuntu的Terminal终端,在控制台输入“cd Desktop”进入到桌面目录,然后输入“ll”,查看桌面上的所有文件,可以发现刚刚建立的HelloWorld.cpp文件,然后输入“g++ HelloWorld.cpp”命令进行编译,完成后再次输入“ll”命令,可以发现桌面上多了a.out文件,这个文件就是刚刚编译好的文件,然后输入“./a.out”执行这个文件,成功输出“hello world”的字符串,至此,我们成功在Linux系统下编译了第一个C++文件;

4、上面最终编译出的文件默认是a.out,但大多数情况下应该是我们自己指定文件的名称,那这又该怎么做呢?其实很简单,只需要在g++编译命令后面指定参数即可,于是将之前的编译命令改为“g++ -o myapp HelloWorld.cpp”即可,我们再次编译,然后查看桌面的文件,发现多了一个myapp文件,接着执行这个文件,成功输出“hello world”字符串;

5、此时,我们可以回到桌面,可以明显看见我们刚刚编译好的文件;

6、之前已经实现了编译单个C++文件,但在实际开发过程中一个cpp文件会包含许多其他文件的头文件,那么这种情况下我们又该怎么编译呢?下面,我们便开始包含头文件的编译方式;
7、我们在桌面上新建一个a.h的头文件和一个a.cpp的C++文件;

8、打开a.h文件并在里面定义一个无返回值的test()方法,如图所示:
9、打开a.cpp文件,引入a.h的头文件并实现里面定义的test()方法,内容也很简单,输出“I am a test file”的字符串,如图所示:
10、打开HelloWorld.cpp文件,引入a.h的头文件,并调用test()方法;

11、我们在控制台输入“ll”命令,可以看见刚刚新建好的文件,然后输入“g++ -o HelloWorld.o –c HelloWorld.cpp”命令,开始编译HelloWorld.cpp文件,再次输入“ll”命令,可以看见刚刚编译好的HelloWorld.o文件;

12、使用同样的方法编译a.cpp文件,编译命令为“g++ -o a.o –c a.cpp”,编译完成后可以看见编译好的a.o文件;

13、上面两步只是分别编译好了HelloWorld.cpp文件和a.cpp文件,并没有把这两个文件链接在一起,我们在控制台输入“g++ -o mytest HelloWorld.o a.o”,把这两个文件链接在一起,然后运行最终编译好的mytest文件,成功输出了“I am a test file”字符串和“hello world”字符串;

14、至此,我们已经学会了编译单个C++文件和带头文件的C++文件,但问题又来了,如果我们需要编译很多个带头文件的C++文件,这样一个一个编译就很费劲了,那么如何来解决这一问题呢?这就需要另外一项编译技术—makefile;
15、我们在桌面上新建一个cmd文件,然后输入以下内容,除了多了“start:”的标识,剩下的都是我们之前用到的编译命令,记得标识下面的每一行都得先按下Tab键,留出一个Tab的宽度;

16、我们先后使用“rm *.o”命令和“rm mytest”命令移除之前编译的以.o结尾的文件和mytest文件;

17、然后在控制台输入“make –f cmd”命令,开始进行批量编译,编译完成后再次输入“ll”命令,发现桌面又多了之前删掉的文件,然后执行mytest文件,结果同样输出了“I am a test file”字符串和“hello world”字符串;

18、至此,在Linux系统下编译C++程序基本完成,但还有一些问题仍未解决,比如尽管使用makefile的方式可以大大提高编译的效率,但如果每一个C++都要这样写的话,也很费劲,因此,还需要对cmd文件里面的内容进行优化,我们下次再说。
7、我们在桌面上新建一个a.h的头文件和一个a.cpp的C++文件;
15、我们在桌面上新建一个cmd文件,然后输入以下内容,除了多了“start:”的标识,剩下的都是我们之前用到的编译命令,记得标识下面的每一行都得先按下Tab键,留出一个Tab的宽度;