热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux下c语言里环境表,Linux下C语言开发环境

一、编辑器vi1、vi是Linux系统中一种文本编辑器,vim是vi的高级版本,兼容vi,功能更强大。2、基本操作(1)进入vim

一、编辑器vi

1、vi是Linux系统中一种文本编辑器,vim 是vi的高级版本,兼容vi,功能更强大。

2、基本操作

(1)进入vim:vim

vim可以自动帮你载入所要编辑的文件或是开启一个新文件。进入vim后屏幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。

(2)离开vim:

:q   退出vim

:q!  不保存强制退出vim

:wq 保存后再离开

:x   保存后再离开

3、Vi的三种模式

(1)命令行模式

①开始编辑命令

i           在光标前输入文本

I           在当前行开始输入文本

o 在当前行后输入新一行

O 在当前行前输入新一行

②光标移动命令

b         移动到当前单词的开始

e         移动到当前单词的结尾

w         向后移动一个单词

h         向前移动一个字符 ←

j         向下移动一行 ↓

k         向上移动一行 ↑

l         向后移动一个字符 →

③删除命令

x      删除光标所在的字符

dd     删除当前行

ndd    删除当前行以后的n行

④改变与替换操作命令

⑤拷贝和粘贴命令

yy      将当前行复制到粘贴板

nyy    将当前行后的n行复制到粘贴板

p       将粘贴板中的内容粘贴在光标后

⑥其他有用的命令

nG                跳到第n行

u                 撤销

gg                移动到第一行行首

G                 移动到最后一行行首

nx                删除n个字符

n+                向后跳转n行

n-                向前跳转n行

n↑↓←→         向上下左右跳转n次

(2)底行模式

①设置vi

:set number等于:set nu      显示行号

: set nonumber等于:set nonu  隐藏行号

:set autoindent 智能缩进

:set mouse=a 开启鼠标

②文件保存及退出命令

:w filename   另存为文件 filename

:wq                   保存退出

:x                    同 :wq

ZZ                    同 :wq

③查询命令

/abc  向后查询abc

?abc  向前查询abc

n         向后继续查询

N         向前继续查询

④替换与查找

:s/old/new               替换该行第一个old为new

:s/old/new/g             可以替换全行中所有的old为new

:#,#s/old/new/g          替换两行之间出现的old为new,#,#为两行的行号

:%s/old/new/g            替换全文的old为new

:%s/old/new/gc           全文替换前需确认

(3)插入模式

二、编译器gcc

1、.c为后缀的文件,c语言源代码文件;

.h为后缀的文件,是程序包含的头文件;

.i为后缀的文件,是已经预处理过的c源代码文件;

.s为后缀的文件,是汇编语言源代码文件

.o为后缀的文件,是编译后的目标二进制文件;

2、编译过程

56bb4742c2b8758e8dec490592656284.png

(1)预处理

预处理器(cpp)根据以字符#开头的命令,修改原始c程序。

gcc -E hello.c -o hello.i

(2)编译

gcc -S hello.i -o hello.s

(3)汇编

gcc -c hello.s -o hello.o

(4)链接

gcc hello.o -o hello

3、其他注意事项

(1)gcc example.c -o example              直接生成可执行文件

(2)./example                                          运行可执行文件

(3)若不使用 -o 则生成可执行文件 a.out

(4)Linux头文件默认放在/usr/include中

三、调试器Gdb

1、首先使用Gcc进行编译

gcc -g func.c -o test

gdb test

2、常用命令

(1)l(list)                       一次列出10行代码(list n,m   #列出n~m行)

(2)r(run)                      执行程序(未设置断点,将程序执行完毕)

(3)b(break)                 b+行号,在该行设置断点

(4)c(continue)            当程序运行时,继续运行程序,直到遇到断点

(5)i b(info break)       查看断点信息

(6)d+编号                   (delete)删除该断点(d删除所有断点)

(7)clear+行号             删除指定行断点(不加行报错)

(8)p(print)                    p+变量名,显示变量的值

(9)s(step)                    单步执行(进入调用函数)

(10)n(next)                  不进入调用的函数,只在主函数中运行

(11)return/finish          退出step进入的调用函数

(12)q(quit)                   退出gdb调试

四、makefile 工程管理器

makefile 是 make 读入的唯一配置文件

1、makefile的基本格式:target:dependency

(Tab字符)command

2、makefile中变量的使用

OBJECTS = sum.o sub.o operator.o           定义变量

$(OBJECTS)                                                  使用变量

3、makefile的自动推导(隐晦规则)

GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,make会自动识别,并自己推导命令。只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中。如:如果make找到一个main.o,那么main.c就会是main.o的依赖文件。并且gcc -c main.c -o main.o也会被推导出来。



推荐阅读
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 本文详细解析了muduo库中的Socket封装及字节序转换功能。主要涉及`Endian.h`和`SocketsOps.h`两个头文件,以及`Socket.h`和`InetAddress.h`类的实现。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文档详细介绍了在 CentOS Linux 7.9 系统环境下,如何从源代码编译安装 libwebsockets 库及其示例程序,并提供了编译过程中可能遇到的问题及解决方案。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • C语言实现推箱子游戏的完整代码
    本文详细介绍了如何使用C语言在Linux环境下实现一个简单的推箱子游戏,包括游戏的基本规则、地图设计及代码实现。适合C语言初学者学习。 ... [详细]
  • 本文探讨了STL迭代器的最佳实践,包括iterator与const_iterator、reverse_iterator及其const版本之间的关系,以及如何高效地转换和使用这些迭代器类型。 ... [详细]
author-avatar
马芷靈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有