Linux下的C语言编程
一、在Linux下的C语言编程所需工具(下面所列举的都是我编程所用的工具)
1.文本编辑器
- Vim
2.编译链接工具
- gcc
3.调试器
- gdb
4.项目管理工具
- make和makefile
二、VIM文本编辑器的模式和配置
vim有三种模式,分别是命令行模式,插入模式,还有底行模式
- 命令行模式(用户可以通过命令来对编辑内容进行编辑,如:复制yy、删除或者剪贴dd、粘贴p)
- 插入模式(i或者a进入,I为到当行首进入Insert模式,A为到行尾进入Insert模式)
- 底行模式(用来保存退出编辑、进行查找关键字或者修改当前vim的配置)
具体的按键属性有兴趣的读者可以点击下方链接:
https://www.runoob.com/linux/linux-vim.html
要用好vim这个强大的工具,必不可少的一步就是修改它的配置文件.vimrc,并且在此基础上安装合适的插件。
注意: (1)vim在系统的配置文件在:/etc/vim/vimrc (如果修改所有用户都会受到影响)
(2)vim在用户中的配置文件在:~/.vimrc (如果修改了只对当前用户造成影响)
要想了解如何配置vim的可以点击下方链接:
https://vimjc.com/vimrc-config.html
三、GCC编译器套件
用gcc编译C语言的好处是可以了解到C语言源代码到可执行程序的每一个过程(这样你对C语言的了解就不仅仅在表面上)
这里用main.c的源文件来举例子:
1.预处理阶段(cpp): gcc -E main.c -o main.i
这一阶段做的事情是删除注释,替换由#define定义的宏命令,根据条件编译对程序进行裁剪,并加载#include所包含的头文件
2.编译阶段(gcc): gcc -S main.i -o main.s
这一阶段做的事情是对C语言的语句进行语法的检查,并将C文件转变为汇编文件(汇编语言:AT&T语法)
3.汇编阶段(as): gcc -c main.s -o main.o
这一阶段做的事情是将汇编文件转变为二进制文件
4.链接阶段(ld): gcc main.o -o main
这一阶段做的事情是将二进制的目标文件和系统的函数库的代码组合在一起生成可执行文件(main)
四、Gdb神奇的调试器
对可执行程序进行调试,可以理解的程序每一个执行过程,观察变量值的变化状况,显示行数,设置断点。
具体细节可以参考以下链接:
https://blog.csdn.net/zdy0_2004/article/details/80102076
五、Make与Makefile的完美配合
首先要配置好Makefile这一个文件,这里要遵循一定的语法规则。
配置完之后就可以用make进行一键编译。
具体细节可以参考以下链接:
https://blog.csdn.net/liqiang981/article/details/75093286?ops_request_misc=&request_id=&biz_id=102&utm_term=make&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-75093286.pc_search_result_before_js&spm=1018.2226.3001.4187
因为这是本人编写的第一个博客,如果存在什么不当之处,请各位指出。(感谢大家!!!)
Linux下的C语言编程的更多相关文章
- linux下的c语言编程学习笔记
视频参看csdn学院王阳和下面的linux环境下c语言编程基础相当的经典,其中王阳的视频讲的很好,相当的经典 编译hellogcc.c需要依赖/home目录下的头文件 为了避免同一个文件被includ ...
- 在Linux下开始C语言的学习
为什么要在linux下学习C语言? linux下可以体验到最纯粹的C语言编程,可以抛出其他IDE的影响 环境配置简单,一条命令就足够.甚至对于大多数linux发行版本,都已经不需要配置C语言的环境 查 ...
- linux下的C语言开发 进程创建 延伸的几个例子
在Linux下面,创建进程是一件十分有意思的事情.我们都知道,进程是操作系统下面享有资源的基本单位.那么,在linux下面应该怎么创建进程呢?其实非常简单,一个fork函数就可以搞定了.但是,我们需要 ...
- Linux下的C Socket编程 -- server端的继续研究
Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...
- Linux下的C Socket编程 -- server端的简单示例
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
- Linux下的C Socket编程 -- 获取对方IP地址
Linux下的C Socket编程(二) 获取域名对应的IP地址 经过上面的讨论,如果我们想要连接到远程的服务器,我们需要知道对方的IP地址,系统函数gethostbyname便能够实现这个目的.它能 ...
- Linux下的C Socket编程 -- 简介与client端的处理
Linux下的C Socket编程(一) 介绍 Socket是进程间通信的方式之一,是进程间的通信.这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上.只要他们之间建立起了sock ...
- Linux 下 expect 脚本语言中交互处理常用命令
Linux 下 expect 脚本语言中交互处理常用命令 1. #!/usr/bin/expect 告诉操作系统脚本里的代码使用那一个 shell 来执行.这里的 expect 其实和 Linux 下 ...
- Linux下高并发网络编程
Linux下高并发网络编程 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时, 最高的并发数量都要受到系统对用户单一进程同时可打 ...
随机推荐
- 【七天搞定Python】day01.Python环境配置、pip、IDE、注释、变量,数据类型、标识符/关键字、输出、输入
什么是Python? 动态解释型语言,1982年由荷兰人Guido von Rossum发明. 更多细节可以google,这里不做展开. Python解释器: CPython(官方版本C语言实现) I ...
- 【ELK】elastalert 日志告警
一.环境 系统:centos7 elk 版本:7.6.2 1.1 ElastAlert 工作原理 周期性的查询Elastsearch并且将数据传递给规则类型,规则类型定义了需要查询哪些数据. 当一个规 ...
- Windows下nginx设置开机自启动
第一步:下载 WinSW https://github.com/winsw/winsw/releases/download/v2.10.3/WinSW.NET4.exe 64位系统 https://g ...
- jQuery 真伪数组的转换
//真数组转换伪数组 var arr = [1,3,5,7,9]; var obj = {}; [].push.apply(obj,arr); console.log(obj) //伪数组转真数组 v ...
- LDAP 简介
一.使用 Directory Services(目录服务)的目的 对于局域网内的一个用户来讲,工作等其它应用需要,我们必须凭帐号登录主机.用帐号收发E-mail,甚至为了管理需要公司还需要维护一个电子 ...
- owners
community/owners.md at master · kubernetes/community https://github.com/kubernetes/community/blob/ma ...
- token的分层图如下
基于 token 的多平台身份认证架构设
- super 多重继承 super() function with multilevel inheritance
Python | super() function with multilevel inheritance - GeeksforGeeks https://www.geeksforgeeks.org/ ...
- Language Guide (proto3) | proto3 语言指南(十)映射
Maps - 映射 如果要创建关联映射作为数据定义的一部分,协议缓冲区提供了一种方便的快捷语法: map<key_type, value_type> map_field = N; -其中k ...
- SpringBoot-文件系统-Excel,PDF,XML,CSV
SpringBoot-文件系统-Excel,PDF,XML,CSV 1.Excel文件管理 1.1 POI依赖 1.2 文件读取 1.3 文件创建 1.4 文件导出 1.5 文件导出接口 2.PDF文 ...