如何在Linux下运行C语言程序

C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。以下是小编为大家搜索整理的如何在Linux下运行C语言程序,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!

Gedit

Gedit是一个简单实用的文本编辑器,拥有漂亮的界面,支持语法高亮,比 Vim 更易上手。本教程将Gedit作为C代码编辑器。

Gedit的安装:

sudo apt-add-repository ppa:ubuntu-on-rails/ppa //添加ubuntu的`软件源

sudo apt-get update //更新软件列表

sudo apt-get install gedit-gmate //安装

在当前目录下创建一个C源文件并打开:

touch test.c

gedit test.c

可以看到gedit的窗口,输入:

#include

#include

int main()

{

printf("Hello,Linux.\n");

exit(0);

}

gedit 窗口截图

注意:Gedit支持多种语言的高亮显示,一般情况下能够自动识别语言,如果识别错误,请在“编辑->高亮模式“下选择C。

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

如果没有运行权限,可以使用sudo命令来增加权限(注意要在Linux的分区下):

sudo cdmod test 777

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

-pedantic选项能够帮助程序员发现一些不符合 ANSI/ISO C标准的代码(并不是全部);

-Wall可以让gcc显示警告信息;

-Werror可以让gcc在编译中遇到错误时停止继续。

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

【如何在Linux下运行C语言程序】相关文章:

c语言在linux下运行程序设计,如何在Linux下运行C语言程序相关推荐

  1. linux查看图像大小_如何在Linux上调整一批图像的大小?

    linux查看图像大小 Resizing images on Linux with gThumb is easy. However, I have a batch of images inside a ...

  2. Linux查看系统所有运行进程,如何在Linux系统列出systemd下所有正在运行的服务

    Linux系统提供各种系统服务(如进程管理.登录.syslog.cron等)和网络服务(如远程登录.电子邮件.打印机.Web主机.数据存储.文件传输.域名解析(使用DNS).动态IP地址分配(使用DH ...

  3. linux下安装sbt_如何在Linux上安装SBT

    linux下安装sbt 介绍 (Introduction) Hi! I am Sanjula, and in this guide I hope to teach you how to install ...

  4. centos sudo不能运行_如何在 Linux 中配置 sudo 访问权限 | Linux 中国

    Linux 系统中 root 用户拥有 Linux 中全部控制权力.Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为.-- Magesh Maruthamuthu Lin ...

  5. linux如何执行平台,如何在Linux平台运行HelloWorld及测试项目

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Cocos2d-x引擎自Cocos2d-1.0.1-x-0.9.2版本以来支持Linux平台. 本文介绍如何在Linux及Android模拟器中运行Hel ...

  6. centos sudo不能运行_如何在Linux中配置sudo访问权限

    Linux 系统中 root 用户拥有 Linux 中全部控制权力.Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为. 如果其他用户想去实施一些行为,不能为所有人都提供 ...

  7. 怎样在linux上打开项目,如何在Linux平台运行HelloWorld及测试项目

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Cocos2d-x引擎自Cocos2d-1.0.1-x-0.9.2版本以来支持Linux平台. 本文介绍如何在Linux及Android模拟器中运行Hel ...

  8. disk在linux怎么使用教程,如何在 Linux 系统下使用 PhotoRec TestDisk

    原标题:如何在 Linux 系统下使用 PhotoRec & TestDisk 同学们在日常工作与学习中难免会有错删文件的情况发生,如果这时有一个合适的工具和相关专业知识,就可以从电脑中恢复已 ...

  9. linux用户删组,如何在 Linux 下删除用户组(groupdel 命令)

    在 Linux 下,用户组用来组织和管理用户账户.用户组的目的主要是为了定义一系列权限,例如:针对一个资源的读,写,执行,并且将这些权限在用户组的用户之间共享. 一个新的用户组可以通过groupadd ...

最新文章

  1. Jboot v2.0-rc.12 发布,优化细节问题
  2. 得到按钮所在DIV的ID
  3. QLocalServer和QLocalSocket单进程和进程通信
  4. java多线程必须掌握吗_多线程模式有什么作用(java多线程必须掌握的知识)
  5. 静态变量读取属性文件_一种通过变量插值读取属性的方法
  6. bert 多义词_广告行业中那些趣事系列15:超实用的基于BERT美团搜索实践
  7. C++中的 .h 和 .cpp 区别详解
  8. 第十七:如何搭建Pytest+Allure2环境(重点非常详细)
  9. vue-cli3.0项目的安装、创建和启动
  10. AI为癌细胞杀手“染色”,辅助医生选择治疗方案 | 附论文
  11. ubuntu需要多大的固态硬盘_揭秘:为什么SSD固态会越用越慢?关键点就在这里,你了解了吗...
  12. LINUX编译java3d/j3d
  13. 利用MDTools和Hydraw设计专业的液压阀块
  14. win10 电脑开机底部任务栏无反应(鼠标一直转圈,部分图标不显示)
  15. linux中cd中文意思,linux中cd ~和!!是什么意思?
  16. 《数字图像处理》-(3)-1从傅里叶级数到傅里叶变换详细推导以及傅里叶图像的性质
  17. zookeeper学习笔记(一)--快速入门与集群部署
  18. mysql简单数据库定期备份
  19. ubuntu安装teamviewer后无法打开,提示权限不够
  20. java计算机毕业设计水果销售管理网站源码+系统+数据库+lw文档

热门文章

  1. Mac技巧:如何打开任何来源选项?
  2. CF 191 div2 C
  3. tyvj p1264 艾泽拉斯的激流
  4. 新氧发布首个医美消费避坑指南 为爱美人士带来干货分享
  5. 全国计算机二级考试内容都有什么用,全国计算机二级考什么内容
  6. 设计模式之-降龙十八掌
  7. 工程资料员,这款软件你值得拥有!“向日葵远程控制软件
  8. 异步和同步 并发和并行
  9. pyqt5调用子窗口子窗口闪退的问题
  10. 为什么现在会有那么多孩子存在感统失调?