市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核、桌面环境和各种常用的必备工具,国内使用较多的是Ubuntu(乌班图)、CentOS、Fedora。

我以Fedora 21 workstation 系统 为例来讲述如何编译C程序。

顺便介绍一下Fedora 21 Workstation的特点:Fedora基于Red Hat Linux,在Red Hat Linux终止发行后,红帽公司计划以Fedora来取代Red Hat Linux在个人领域的应用,而另外发行的Red Hat Enterprise Linux(Red Hat企业版Linux,RHEL)则取代Red Hat Linux在商业应用的领域。

1 #include<stdio.h>
2 #include<stdlib.h>
3 int main()
4 {
5     printf("Hello,Linux.\n");
6     exit(0);
7 }

GCC

Linux下使用最广泛的C/C++编译器是GCC,大多数的Linux发行版本都默认安装,不管是开发人员还是初学者,一般都将GCC作为Linux下首选的编译工具。本教程毫不犹豫地使用GCC来编译C程序。

保存文件后退出,打开终端并 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就是目标文件。目标文件与可执行文件类似,都是机器能够识别的可执行代码,但是由于还没有链接,结构会稍有不同。

3) 链接并生成可执行文件
    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
如果没有运行权限,可以使用su命令来增加权限(注意要在Linux的分区下):
   chmod +x test

对于程序的检错,我们可以用-pedantic、-Wall、-Werror选项:

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

这3个选项都是非常有用的。

转载于:https://www.cnblogs.com/liujie037/p/4496972.html

在Linux下运行C语言程序相关推荐

  1. c语言在linux下运行程序设计,如何在Linux下运行C语言程序

    如何在Linux下运行C语言程序 C语言是一个有结构化程序设计.具有变量作用域(variable scope)以及递归功能的过程式语言.以下是小编为大家搜索整理的如何在Linux下运行C语言程序,希望 ...

  2. deepin终端编译c程序_大神支招 如何在Linux下运行C语言程序

    刚入门学习C语言程序的小伙伴比较常遇到的其中一个问题是:如何在Linux下运行C语言程序.今天针对这个热门问题,小编为大家准备了详细的教程! 小编先给大家普及一些关于C语言程序的基本常识:首先大家要清 ...

  3. 怎么用centos7运行c语言程序_在Linux下运行C语言程序

    市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境和各种常用的必备工具,国内使用较多的是Ubuntu(乌班图).CentOS.Fedora. 我以Fedora 2 ...

  4. linux下运行c语言程序报Segmentation Fault的定位方法

    打开终端,然后输入以下命令开启ulimit ulimit -c unlimited # 打开ulimit ulimit -c # 如果打开成功会返回unlimited PS:以上开启ulimit的操作 ...

  5. Linux下运行C语言程序

    一.编写C语言的源代码 二.用gcc -c C文件名生成.o文件 三.用gcc -o 可执行文件名 .o文件名 生成可执行文件 四.输入可执行文件名前加./执行可执行文件 转载于:https://ww ...

  6. 在linux中运行c语言程序,linux环境中运行C语言程序

    在linux环境下做运行C语言程序 [root@localhost ~]# cat a.c #include main() {int grade; char chgrade; printf(" ...

  7. 【嵌入式1】Ubuntu系统下运行C语言程序以及用Makefile方式编程

    文章目录 一.设置网络参数 1.虚拟机网络适配器设置为NAT模式 2.确定网卡ip 3.设置NAT网络的端口映射 4.进行网络测试 二.用C语言编写一个简单的输出 hello word 的程序. 三. ...

  8. 在Ubuntu系统下运行c语言程序

    第一周作业--嵌入式系统程序设计系统基础 作业要求 请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int ...

  9. linux里运行windows,在Linux上运行Windows应用程序

    当前位置:我的异常网» Linux/Unix » 在Linux上运行Windows应用程序 在Linux上运行Windows应用程序 www.myexceptions.net  网友分享于:2015- ...

最新文章

  1. Django模型Model的定义
  2. Kotlin的Reified类型:怎样在函数内使用这一类型(KAD 14)
  3. ModelSim 使用笔记1
  4. java.io.IOException: Too many open files
  5. Leet Code OJ 338. Counting Bits [Difficulty: Medium]
  6. 数据挖掘之数据预处理
  7. Bourbon: 让你的sass更简洁
  8. Java网络编程-1
  9. 2018浙大计算机考研经验,考研经验2018中科大计算机考研第一398分初复试经验诚挚分享.docx...
  10. 如何破解linux用户帐号密码二
  11. 静态NAT、动态NAT、PAT(端口多路复用)的配置
  12. db2和oracle数据同步,DB2与Oracle数据库之间的远程复制(转)
  13. mbot编程机器人怎么连接蓝牙_STEAM教育机器人搭建指南,mBot入门级编程机器人搭建教程...
  14. 元器件及测量基础实验
  15. 视频画面怎么快速进行水平翻转?
  16. EMC辐射骚扰整改案例分析
  17. 重装系统感悟之设置系统还原点
  18. Windows安装mysql及图形化界面navicat
  19. ASEMI快恢复二极管SFP3006和瞬态二极管一样吗?SFP3006和TVS能否代换
  20. 微信新升级?这2个功能是你们期盼的吗?

热门文章

  1. 【硬见小百科】PCB设计软件简介
  2. 【爬虫】获取手机详细参数爬虫脚本详细解析
  3. wpsppt页面卷曲在哪里_ppt页面之间动画效果 2013版ppt怎么制作页面卷曲动画效果...
  4. CAN/CANFD数据诊断记录仪 CANLog-VCI 的功能及应用
  5. 为什么有的人销售业绩很好,有的销售业绩很差,到底为什么?
  6. 移动端芯片性能评测论文出炉
  7. 2 -「季淳卿」 Redis 字符串+哈希
  8. 【云小课合集】华为云小课最全合集来了,让您上云无忧
  9. 计算机视觉前景及应用如何?大牌分析师这样看……
  10. speedpdf——免费的CAD转PDF转换器