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语言的了解就不仅仅在表面上)
linux下源代码生成可执行文件的过程这里用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连接处理时, 最高的并发数量都要受到系统对用户单一进程同时可打 ...
随机推荐
- k8s集群中遇到etcd集群故障的排查思路
一次在k8s集群中创建实例发现etcd集群状态出现连接失败状况,导致创建实例失败.于是排查了一下原因. 问题来源 下面是etcd集群健康状态: 1 2 3 4 5 6 7 8 9 10 11 [roo ...
- Netty学习:EventLoop事件机制
目录 EventLoop是什么 EventLoop适用的场景 Netty中的EventLoop Netty中的大量inEventLoop判断 Netty是如何建立连接并监听端口的-NIOSocketC ...
- 未使用绑定变量对share_pool的影响
oracle SGA中包含数据高速缓冲,重做日志缓冲,以及共享池(share_pool).共享池中包含库高速缓冲(所有的SQL,执行计划等)和数据字典缓冲(对象的定义,权限等). 所以,如果SQL中没 ...
- let关键字:加强版的var关键字
本文首发于个人网站:let关键字:加强版的var关键字 你好,今天大叔想和你唠扯唠扯 ES6 新增的关键字 -- let.再说 let 的具体用法之前,大叔想先和你说说大叔自己对 let 的感受 -- ...
- 白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧。
目录 一.导读 三._search api 搜索api 3.1.什么是query string search? 3.2.什么是query dsl? 3.3.干货!32个查询案例! 四.聚合分析 4.1 ...
- Python内存浅析
Python内存分析 内存机制 转述:内存中的堆栈和数据结构堆栈不是一个概念,可以说内存中的堆栈是真实存在的物理区,数据结构中的堆栈是抽象的数据存储结构. Python的内存机制和Java差不多,分为 ...
- 解决 win10 无法安装VS2019,visual studio installer下载进度始终为0
解决 win10 无法安装VS2019,visual studio installer下载进度始终为0 目录 解决 win10 无法安装VS2019,visual studio installer下载 ...
- owners
community/owners.md at master · kubernetes/community https://github.com/kubernetes/community/blob/ma ...
- (011)每日SQL学习:SQL开窗函数
开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成.为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数的 ...
- loj2587铁人两项
无向图,图中选出定点三元组(a,b,c),a->b->c的路径没有重复边.问方案有多少? -------------------------------------------- 首先求出 ...