服务器上的 Linux 是不安装图形界面的,只能在控制台模式下使用,以尽量节省服务器资源。而我们在学习过程中使用的 Linux 是带图形界面的,以满足初学者的需求,降低学习成本。在 Linux 下我们仍然可以使用带界面的、傻瓜式的 IDE,例如 CodeLite、CLion(收费)、Code::Blocks、Netbeans、Eclipse CDT 等。微软的 Visual Studio 也支持 Linux 了,在 Windows 下用惯了 Visual Studio 的用户也可以毫无障碍地迁移到 Linux 平台。
如果你使用的是其它的 Linux 发行版,可能没有默认安装 Gedit,这个时候就得自己安装,具体步骤为:首先,在我们自己的用户目录下新建一个名为$ sudo apt-add-repository ppa:ubuntu-on-rails/ppa #添加ubuntu的软件源
$ sudo apt-get update #更新软件列表
$ sudo apt-get install gedit-gmate #安装
demo
的文件夹。这个文件夹专门用来存放与C语言相关的文件,例如源文件、目标文件、可执行文件等,它专供我们学习使用。
用户目录有时候也叫 home 文件夹或者主文件夹,它的路径是/home/username
,其中 username 就是我们登录 Linux 时使用的用户名。Linux 会在 home 目录下为每一个登录的用户创建一个文件夹,专门用来存放该用户使用到的配置文件、文本文档、图片、可执行程序等,以和其他用户区分开来。
接下来需要创建一个空白的 main.c 源文件。main.c 其实就是一个纯文本文件,并没有任何特殊格式,但是 Linux 不像 Windows,可以在右键菜单中新建文本文档,Linux 必须使用命令来创建,如下所示:
$ cd demo #进入 demo 目录,这是源文件所在的目录
$ touch main.c #使用 touch 命令创建一个名为 main.c 的空文件
$ gedit main.c #使用 gedit 命令编辑 main.c
#include <stdio.h> int main() { puts("C语言中文网"); return 0; }输入完成后的效果如下图所示:
Ctrl+S
保存文件,就完成了源代码的编辑工作。此时需要关闭 Gedit 的窗口,$ gedit main.c
命令才算执行结束,才能在控制台继续输入其它命令。touch
命令创建完 main.c 后,进入 demo 目录,在右键菜单中也可以使用 Gedit 打开 main.c,如下图所示:
gcc
命令就可以将源文件编译成可执行文件。
$ cd demo #进入源文件所在的目录
$ gcc main.c #在 gcc 命令后面紧跟源文件名
注意:不像 Windows,Linux 不以文件后缀来区分可执行文件,Linux 下的可执行文件后缀理论上可以是任意的,这里的如果不想使用默认的文件名,那么可以通过.out
只是用来表明它是 GCC 的输出文件。不管源文件的名字是什么,GCC 生成的可执行文件的默认名字始终是a.out
。
-o
选项来自定义文件名,例如:
$ gcc main.c -o main.out
这样生成的可执行程序的名字就是main.out
。$ 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 命令不会自动创建,而是抛出一个错误。
$ ./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
命令也可以将编译和链接分开,每次只完成一项任务。
-c
选项,例如:
gcc -c main.c
就将 main.c 编译为 main.o。打开 demo 目录,就会看到 main.o: 对于微软编译器(内嵌在 Visual C++ 或者 Visual Studio 中),目标文件的后缀为.obj
;对于 GCC 编译器,目标文件的后缀为.o
。-o
选项,例如:
gcc -c main.c -o a.o
这样生成的目标文件的名字就是 a.o。gcc
命令后面紧跟目标文件的名字,就可以将目标文件链接成为可执行文件,例如:
gcc main.o
就将 main.o 链接为 a.out。打开 demo 目录,就会看到 a.out。gcc
命令后面紧跟源文件名字或者目标文件名字都是可以的,gcc
命令能够自动识别到底是源文件还是目标文件:如果是源文件,那么要经过编译和链接两个步骤才能生成可执行文件;如果是目标文件,只需要链接就可以了。-o
选项仍然能够自定义可执行文件的名字,例如:
gcc main.o -o main.out
这样生成的可执行文件的名字就是 main.out。
$ cd demo
$ gcc -c main.c
$ gcc main.o
$ ./a.out
C语言中文网
$
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有