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连接处理时, 最高的并发数量都要受到系统对用户单一进程同时可打 ...
随机推荐
- linux7下修改主机名的方式
在基于linux发行版的众多linux kernel 3.0以上,包括rhel7,centos7等提供多种修改linux主机名的方式 1.通过编辑/etc/hostname文件 2.命令hostnam ...
- 图解 | 原来这就是TCP
你是一台电脑,你的名字叫 A 经过<图解 | 原来这就是网络>这篇文章中的一番折腾,只要你知道另一位伙伴 B 的 IP 地址,且你们之间的网络是通的,无论多远,你都可以将一个数据包发送给你 ...
- 微服务网关1-Spring Cloud Gateway简介
一.网关基本概念 1.API网关介绍 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各 ...
- 提取当前文件夹下的所有文件名.bat(Windows批处理文件)
@echo off dir /s/b *.* > 文件名.txt exit
- Linux网卡没有eth0显示ens33原因以及解决办法
原因 首先说明下eth0与ens33的关系: 目前的主流网卡为使用以太网络协定所开发出来的以太网卡 (Ethernet),因此我们 Linux 就称呼这种网络接口为 ethN (N 为数字). 举例来 ...
- 解读腾讯敏捷研发核心驱动力 腾讯TAPD TAPD 2020-12-17
解读腾讯敏捷研发核心驱动力 腾讯TAPD TAPD 2020-12-17
- YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details. data = yaml.load(file_data)
YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsa ...
- 精通MySQL之索引篇,这篇注重练习!
老刘是即将找工作的研究生,自学大数据开发,一路走来,感慨颇深,网上大数据的资料良莠不齐,于是想写一份详细的大数据开发指南.这份指南把大数据的[基础知识][框架分析][源码理解]都用自己的话描述出来,让 ...
- Linux系统对文件及目录的权限管理(chmod、chown)
本文命令: 4 5 6 ls -l chmod chown 1.身份介绍 在linux系统中,对文件或目录来说访问者的身份有三种: ①.属主用户,拥有者(owner)文件的创建者 ②.属组用户,和文件 ...
- Neeto-Vue:我为了记笔记,手写了一个为知笔记客户端
构建自托管的笔记系统 这两年各种笔记系统快速井喷,好像谁都能来掺一脚,app store随便搜索一个关键字就会有一大堆的结果,从老牌的印象笔记,Bear,MWeb,有道云笔记再到新星专注笔记之类,从买 ...