第一次在Linux系统上写C程序,很多人会觉得有点懵。跟Windows那种点点鼠标就能编译的环境不一样,Linux更多是命令行操作,但其实只要掌握几个关键步骤,整个过程比想象中简单得多。这篇文章会带你一步步完成从环境准备到程序运行的全过程,全是实际能用上的内容。

装好编译器才能干活

写C程序之前,得先确认系统里有没有C编译器。Ubuntu和Debian这类系统,在终端输入gcc -v就能看到版本信息,如果提示没找到命令,用sudo apt install gcc就能装上。CentOS或Fedora则是用sudo yum install gcc。装好之后,随便写个最简单的程序测试一下,比如在终端输入echo 'main(){printf("ok");}' > test.c,然后用gcc test.c -o test编译,运行./test看看能不能输出ok,能输出就说明环境没问题。

很多人卡在第一步,就是因为不知道自己的系统是什么发行版,装错了包管理器。其实看系统版本很简单,输入cat /etc/os-release就能看到详细信息,根据这个信息选择对应的安装命令就行。另外有些系统默认不带build-essential这个包,装了gcc可能还是缺少头文件deepin linux,这时候可以sudo apt install build-essential把整套工具链都装上。

程序文件放哪里比较方便

linux程序设计基础_linux下简单c程序设计_linux简单程序实例

代码文件放在哪,看起来是小事,但对新手来说挺容易出问题的。有些人直接在家目录下到处放文件,找起来很麻烦。最好专门建个文件夹,比如mkdir -p ~/c_projectslinux系统介绍,把所有C程序都放这里面。每个项目再单独建个子目录,比如mkdir ~/c_projects/hello_world,这样代码、编译出来的可执行文件、配置文件都能分开存放。

要注意的是Linux系统对文件权限很敏感,如果编译出来的程序提示权限不够,用chmod +x 程序名加个执行权限就行。另外文件名最好都用英文linux下简单c程序设计,别用中文,有些编译器对中文路径支持不好,编译时会报一些莫名其妙的错误。还有一点,写代码时最好养成习惯,每个文件都在开头写上简单的注释,说明这是什么程序、谁写的、什么时候写的,以后回头看代码时能省不少时间。

写代码要注意的基本格式

linux程序设计基础_linux简单程序实例_linux下简单c程序设计

C程序的基本结构其实很简单,一个main函数就包含了一切。比如#include <stdio.h>这句是必须的,它告诉编译器要用标准输入输出库。然后主函数里写具体逻辑linux下简单c程序设计,最后用return 0表示程序正常结束。新手最容易犯的错误是大括号不匹配,少写一个花括号,编译时就会报错,而且错误信息往往指向下一行,找起来很费劲。

建议先用文本编辑器写代码,比如vim或nano,不要一上来就用IDE。用编辑器能让你更清楚地理解每行代码的作用。写完保存时要注意文件名必须以.c结尾,比如test.c。有些人不小心保存成.txt或者没有扩展名,编译时gcc test.c会提示找不到文件。另外代码缩进也很重要,虽然Linux不强制要求缩进,但良好的缩进习惯能让代码结构一目了然,出错了也容易定位。

编译命令到底该怎么写

linux简单程序实例_linux程序设计基础_linux下简单c程序设计

编译C程序最常用的命令就是gcc 源文件名.c -o 输出文件名。比如gcc test.c -o test,这会把test.c编译成一个叫test的可执行文件。如果不加-o参数,默认会生成一个叫a.out的文件,运行的时候也要用./a.out来执行。很多人第一次编译时不知道这个默认行为,找不到生成的文件,其实它就在当前目录下。

编译过程中如果出现错误,不要慌,编译器会告诉你哪个文件的第几行有问题。最常见的是语法错误,比如少了分号、变量没定义、函数调用时参数类型不对。这时候打开源文件,找到对应的行,检查一下就能发现。警告信息也要关注,虽然程序能运行,但有些警告可能意味着潜在问题。比如变量声明了但没用,编译器会提示,这说明代码可能有多余的内容,可以删掉保持整洁。

运行程序时遇到问题怎么处理

linux简单程序实例_linux程序设计基础_linux下简单c程序设计

编译成功后,在终端输入./程序名就能运行。比如./test,记得前面一定要加./,这是告诉系统在当前目录找程序。如果直接输入test,系统会去PATH环境变量里找,大概率是找不到的。有些程序运行后没有输出,可能是程序里没有写输出语句,或者输出被缓冲了,可以用fflush(stdout)强制刷新一下。

调试程序的话,可以用gdb这个工具,但新手最常用的调试方法还是加打印语句。比如在关键位置加上printf("变量x的值是:%dn", x);,运行后看输出就能知道程序执行到了哪里、变量的值对不对。另外要注意程序中的死循环问题,如果程序一直在运行不停止,按Ctrl+C就能强制结束。写循环时最好加上退出条件,不然调试时会很麻烦。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复