在Linux下运行C语言程序
市面上常见的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语言程序相关推荐
- c语言在linux下运行程序设计,如何在Linux下运行C语言程序
如何在Linux下运行C语言程序 C语言是一个有结构化程序设计.具有变量作用域(variable scope)以及递归功能的过程式语言.以下是小编为大家搜索整理的如何在Linux下运行C语言程序,希望 ...
- deepin终端编译c程序_大神支招 如何在Linux下运行C语言程序
刚入门学习C语言程序的小伙伴比较常遇到的其中一个问题是:如何在Linux下运行C语言程序.今天针对这个热门问题,小编为大家准备了详细的教程! 小编先给大家普及一些关于C语言程序的基本常识:首先大家要清 ...
- 怎么用centos7运行c语言程序_在Linux下运行C语言程序
市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境和各种常用的必备工具,国内使用较多的是Ubuntu(乌班图).CentOS.Fedora. 我以Fedora 2 ...
- linux下运行c语言程序报Segmentation Fault的定位方法
打开终端,然后输入以下命令开启ulimit ulimit -c unlimited # 打开ulimit ulimit -c # 如果打开成功会返回unlimited PS:以上开启ulimit的操作 ...
- Linux下运行C语言程序
一.编写C语言的源代码 二.用gcc -c C文件名生成.o文件 三.用gcc -o 可执行文件名 .o文件名 生成可执行文件 四.输入可执行文件名前加./执行可执行文件 转载于:https://ww ...
- 在linux中运行c语言程序,linux环境中运行C语言程序
在linux环境下做运行C语言程序 [root@localhost ~]# cat a.c #include main() {int grade; char chgrade; printf(" ...
- 【嵌入式1】Ubuntu系统下运行C语言程序以及用Makefile方式编程
文章目录 一.设置网络参数 1.虚拟机网络适配器设置为NAT模式 2.确定网卡ip 3.设置NAT网络的端口映射 4.进行网络测试 二.用C语言编写一个简单的输出 hello word 的程序. 三. ...
- 在Ubuntu系统下运行c语言程序
第一周作业--嵌入式系统程序设计系统基础 作业要求 请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int ...
- linux里运行windows,在Linux上运行Windows应用程序
当前位置:我的异常网» Linux/Unix » 在Linux上运行Windows应用程序 在Linux上运行Windows应用程序 www.myexceptions.net 网友分享于:2015- ...
最新文章
- Django模型Model的定义
- Kotlin的Reified类型:怎样在函数内使用这一类型(KAD 14)
- ModelSim 使用笔记1
- java.io.IOException: Too many open files
- Leet Code OJ 338. Counting Bits [Difficulty: Medium]
- 数据挖掘之数据预处理
- Bourbon: 让你的sass更简洁
- Java网络编程-1
- 2018浙大计算机考研经验,考研经验2018中科大计算机考研第一398分初复试经验诚挚分享.docx...
- 如何破解linux用户帐号密码二
- 静态NAT、动态NAT、PAT(端口多路复用)的配置
- db2和oracle数据同步,DB2与Oracle数据库之间的远程复制(转)
- mbot编程机器人怎么连接蓝牙_STEAM教育机器人搭建指南,mBot入门级编程机器人搭建教程...
- 元器件及测量基础实验
- 视频画面怎么快速进行水平翻转?
- EMC辐射骚扰整改案例分析
- 重装系统感悟之设置系统还原点
- Windows安装mysql及图形化界面navicat
- ASEMI快恢复二极管SFP3006和瞬态二极管一样吗?SFP3006和TVS能否代换
- 微信新升级?这2个功能是你们期盼的吗?