既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
在 Gedit 中输入下面的C语言代码:
#include <stdio.h>
int main()
{
puts(“C语言中文网”);
return 0;
}
输入完成后的效果如下图所示:
Ctrl+S保存文件,就完成了源代码的编辑工作。此时需要关闭Gedit的窗口,$ gedit main.c命令才算执行结束,才能在控制台继续输入其它命令。
下图演示了在控制台上的实际效果:
注意,在CentOS下,使用touch命令创建完main.c后,进入demo目录,在右键菜单中也可以使用Gedit 打开main.c,如下图所示:
GCC 编译器
Linux下使用最广泛的 C/C++ 编译器是 GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将 GCC 作为Linux下首选的编译工具。本教程也毫不犹豫地使用 GCC 来编译C语言程序。GCC 仅仅是一个编译器,没有界面,必须在命令行模式下使用。通过gcc命令就可以将源文件编译成可执行文件。
1) 生成可执行程序
最简单的生成可执行文件的写法为:
$ cd demo #进入源文件所在的目录
$ gcc main.c #在 gcc 命令后面紧跟源文件名
打开 demo 目录,会看到多了一个名为 a.out 的文件,这就是最终生成的可执行文件,如下图所示:
这样就一次性完成了编译和链接的全部过程,非常方便。
注意:不像 Windows,Linux 不以文件后缀来区分可执行文件,Linux 下的可执行文件后缀理论上可以是任意的,这里的.out只是用来表明它是 GCC 的输出文件。不管源文件的名字是什么,GCC 生成的可执行文件的默认名字始终是a.out。
如果不想使用默认的文件名,那么可以通过-o选项来自定义文件名,例如:
$ gcc main.c -o main.out
这样生成的可执行程序的名字就是main.out。
因为Linux下可执行文件的后缀仅仅是一种形式上的,所以可执行文件也可以不带后缀,例如:
$ gcc main.c -o main
这样生成的可执行程序的名字就是main。
通过-o选项也可以将可执行文件输出到其他目录,并不一定非得在当前目录下,例如:
$ gcc main.c -o ./out/main.out
或者
$ gcc main.c -o out/main.out
表示将可执行文件输出到当前目录下的out目录,并命名为main.out。./表示当前目录,如果不写,默认也是当前目录。
注意:out 目录必须存在,如果不存在,gcc 命令不会自动创建,而是抛出一个错误。
2) 运行可执行程序
上面我们生成了可执行程序,那么该如何运行它呢?很简单,在控制台中输入程序的名字就可以,如下所示:
$ ./a.out
./表示当前目录,整条命令的意思是运行当前目录下的 a.out 程序。如果不写./,Linux 会到系统路径下查找 a.out,而系统路径下显然不存在这个程序,所以会运行失败。
所谓系统路径,就是环境变量指定的路径,我们可以通过修改环境变量添加自己的路径,或者删除某个路径。很多时候,一条Linux命令对应一个可执行程序,如果执行命令时没有指明路径,那么就会到系统路径下查找对应的程序。
输入完上面的命令,按下回车键,程序就开始执行了,它会将输出结果直接显示在控制台上,如下所示:
$ cd demo
$ gcc main.c
$ ./a.out
C语言中文网
$
下图演示了在控制台上的实际效果:
如果程序在其它目录下,运行程序时还要带上目录的名字,例如:
$ ./out/main.out
或者
$ out/main.out
这个时候加不加./都一样,Linux 能够识别出out是一个目录,而不是一个命令,它默认会在当前路径下查找该目录,而不是去系统路径下查找,所以不加./也不会出错。
注意,如果程序没有执行权限,可以使用sudo命令来增加权限,例如:
$ sudo chmod 777 a.out
完整的演示
为了让读者有一个更加全面的认识,我们不妨将上面两部分的内容连接起来,完整的演示一下从编辑源文件到运行可执行程序的全过程:
$ cd demo #进入源文件所在目录
$ touch main.c #新建空白的源文件
$ gedit main.c #编辑源文件
$ gcc main.c #生成可执行程序
$ ./a.out #运行可执行程序
C语言中文网
$ #继续等待输入其它命令
下图是在控制台上的实际效果:
分步骤编译
上面讲解的是通过gcc命令一次性完成编译和链接的整个过程,这样最方便,大家在学习C语言的过程中一般都这么做。实际上,gcc命令也可以将编译和链接分开,每次只完成一项任务。
1) 编译(Compile)
将源文件编译成目标文件需要使用-c选项,例如:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!