美文网首页
在linux环境下运行C语言程序

在linux环境下运行C语言程序

作者: 小学渣的春天 | 来源:发表于2016-01-14 12:05 被阅读968次

Linux下使用最广泛的C/C++编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将GCC作为Linux下首选的编译工具。
保存文件后退出,打开终端并 cd 到当前目录,输入下面的命令:
gcc test.c -o test
可以直接将C代码编译链接为可执行文件。

可以看到在当前目录下多出一个文件 test,这就是可执行文件。不像Windows,Linux不以文件后缀来区分可执行文件,Linux下的可执行文件后缀理论上是可以任意更改的。

当然,也可以分步编译:

  1. 预处理
    gcc -E test.c -o test.i
    在当前目录下会多出一个预处理结果文件 test.i,打开 test.i 可以看到,在 test.c 的基础上把stdio.h和stdlib.h的内容插进去了。

  2. 编译为汇编代码
    gcc -S test.i -o test.s
    其中-S参数是在编译完成后退出,-o为指定文件名。

  3. 汇编为目标文件
    gcc -c test.s -o test.o
    .o就是目标文件。目标文件与可执行文件类似,都是机器能够识别的可执行代码,但是由于还没有链接,结构会稍有不同。

  4. 链接并生成可执行文件
    gcc test.o -o test

如果有多个源文件,可以这样来编译:
gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc test1.o test2.o -o test

注意:如果不指定文件名,GCC会生成名为a.out的文件,.out文件只是为了区分编译后的文件,Linux下并没有标准的可执行文件后缀名,一般可执行文件都没有后缀名。

编译后生成的test文件就是程序了,运行它:
./test
如果没有运行权限,可以使用sudo命令来增加权限(注意要在Linux的分区下):
sudo cdmod test 777

对于程序的检错,我们可以用-pedantic、-Wall、-Werror选项: • -pedantic选项能够帮助程序员发现一些不符合 ANSI/ISO C标准的代码(并不是全部);
• -Wall可以让gcc显示警告信息;
• -Werror可以让gcc在编译中遇到错误时停止继续。

相关文章

  • 在linux环境下运行C语言程序

    Linux下使用最广泛的C/C++编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,...

  • 第四周简报

    高中同学来问C语言,就想到在Linux的环境下运行C语言是怎么样的状况。比起Windows下的C语言的编程,Lin...

  • 实验七

    实验七 在Linux系统下编辑C语言程序并运行 实验目的 1.学习简单的C语言程序的编辑风格及其格式要求 2.学会...

  • linux 下CentOS 7 系统 安装 Nginx

    CentOS 7 下安装 Nginx 安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行,当然...

  • 关于在Linux系统下编辑C语言程序

    本周我们学习了在Linux系统下编辑C语言程序。在编写C语言程序的初始步骤与编辑脚本程序相类似,只不过C语言程序时...

  • 操作系统第一次上机实验-Linux系统下的进程创建

    本文使用Linux系统,语言使用C语言 1.如何在Linux系统下,编译运行C语言 1.1创建编写一个.c文件 如...

  • centos7安装nginx

    安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行。 一. gcc 安装 安装 nginx 需...

  • 精解C语言预处理命令(四)之#if、##ifdef、#ifnde

    假如现在要开发一个C语言程序,让它输出红色的文字,并且要求跨平台,在 Windows 和 Linux 下都能运行,...

  • 编译与链接

    编译与链接 代码运行背后的过程 经典C语言程序: Linux下,使用gcc来编译这个程序,进入命令行输入: 可以看...

  • nginx安装手册

    1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境。...

网友评论

      本文标题:在linux环境下运行C语言程序

      本文链接:https://www.haomeiwen.com/subject/svzckttx.html