首页 > 编程知识 正文

c语言gcc编译命令,linux自带gcc吗

时间:2023-05-06 14:06:21 阅读:120330 作者:4009

GCC编译器的简单教程(在Linux上构建c语言开发环境)市面上所有常见的Linux都是发行版,典型的Linux发行版包括Linux内核、桌面环境(GNOME、kkki

Linux不是常见的PC,主要用于多种服务器,如web服务器、数据库服务器、DNS服务器、邮件服务器、路由器和负载平衡群集。 Linux是服务器操作系统的绝对霸主,占80%以上的份额,在未来的服务器领域,Linux是大势所趋。 其中,又以CentOS和Ubuntu为主,CentOS占有压倒性优势。 服务器操作系统的80%以上的份额由Linux占,Linux的80%以上的份额由CentOS占。 本教程以CentOS为例介绍如何编译c程序。

服务器上的Linux没有安装图形界面,只能在控制台模式下使用,以最大限度地减少服务器资源。 为了满足初学者的需求和降低学习成本,我们用于学习的Linux拥有图形界面。

在Linux上,可以继续使用带接口的笨蛋IDE,如代码lite、CLion (收费)、代码: blocks、Netbeans和Eclipse CDT。 微软的Visual Studio也支持Linux。 熟悉Windows上Visual Studio的用户也可以无障碍地迁移到Linux平台。

但是,作为初学者,我们建议您在命令行模式下编译c语言程序。 这样,您就可以了解生成可执行文件的详细步骤,以及编译命令的各种设置选项,并为今后的LinuxC/C开发奠定坚实的基础。

在Linux上,Gedit编辑器推荐许多程序员使用Vim、Emacs等命令行模式的编辑器。 它们功能强大,无论有没有桌面环境,都可以被强制使用,是LinuxC/C程序员必备的神器。 但是,由于Vim和Emacs不容易获得,用户需要记住和熟练掌握许多命令和快捷键,因此学习和适应需要时间,增加初学者的学习成本,因此在此不推荐。

在CentOS下,有一个名为Gedit的图形界面编辑器。 Gedit是一个简单实用的文本编辑器,界面优雅,支持语法高亮,比Vim更容易使用,与Windows下的编辑器没有区别。 在本教程中,您将使用Gedit作为c语言代码的编辑器。

如果您使用的是其他Linux发行版,并且默认情况下未安装Gedit,则必须按照以下步骤自行安装:

添加$ sudo apt-add-repository PPA : Ubuntu-on-rails/PPA # Ubuntu的软件源

更新$ sudo apt-get update #软件列表

$ sudo apt-getinstallgedit-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

源文件现在已创建完毕,可以使用Gedit编辑源文件。

n-left:0cm;">在 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选项,例如:

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。

2) 链接(Link

在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语言中文网

在控制台上的真实效果为:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。