【linux】在linux操作系统下快速熟悉开发环境并上手开发工具——体验不一样的开发之旅

简介: 【linux】在linux操作系统下快速熟悉开发环境并上手开发工具——体验不一样的开发之旅

vim编辑器

vim是文本编辑器,可用于编写代码


Linux编译器:gcc/g++使用

保存代码的文件属于文本文件,计算机并不认识文本文件,需要把文本文件转成二进制文件代码才能运行。

gcc和g++就是这样的工具,gcc是用来编译C语言的,g++是用来编译C++的。小编只需讲清gcc即可,gcc的概念和选项完全可以迁移到g++。

gcc和g++的选项

下面是gcc和g++的选项,小编会用编译过程和实例详解一些常用选项

-E 只激活预处理 , 这个不生成文件 , 你需要把它重定向到一个输出文件里面

-S  编译到汇编语言不进行汇编和链接

-c  编译到目标代码

-o 文件输出到 文件

-static 此选项对生成的文件采用静态链接

-g 生成调试信息。 GNU 调试器可利用该信息。

-shared   此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库 .

-O0

-O1

-O2

-O3 编译器的优化选项的 4 个级别, -O0 表示没有优化 ,-O1 为缺省值, -O3 优化级别最高

-w  不生成任何警告信息。

-Wall 生成所有警告信息。

编译过程

预处理 ( 进行宏替换 )

预处理功能主要包括宏定义 , 文件包含 , 条件编译 , 去注释等

预处理指令是以 # 号开头的代码行

一般把预处理后的代码放到以.i为后缀的文件中,不是以.i为后缀也不影响。

编译(生成汇编)

在这个阶段中 ,gcc 首先要检查代码的规范性、是否有语法错误等 , 以确定代码的实际要做的工作 , 在检查 无误后,gcc 把代码翻译成汇编语言

一般把编译的代码放到以.s为后缀的文件中,不是以.s为后缀也不影响。

汇编(生成机器可识别代码)

汇编阶段是把编译阶段生成的 “.s” 文件转成目标文件 ,这里的目标文件本质是计算机能看懂的二进制文件。

连接(生成可执行文件或库文件)

在成功编译之后 , 就进入了链接阶段.o文件已经是二进制文件了,为什么不是最终的可执行文件呢?

因为我们的代码中调用了一些C语言的库函数,而我们的代码中只有库函数的声明和调用,库函数的实现在C语言的库中,对于任何一门语言都需要将自己的库安装在系统的特定路径下。

而链接方式有两种,静态链接和动态链接

动静态库的链接

静态库是指编译链接时 , 把库文件的代码全部加入到可执行文件中 , 因此生成的文件比较大 , 但在运行时也 就不再需要库文件了。其后缀名一般为“.a”

动态库与之相反 , 在编译链接时并没有把库文件的代码加入到可执行文件中 , 而是在程序执行时由运行时链接文件加载库, 这样可以节省系统的开销。动态库一般后缀名为 “.so”, gcc 在编译时默认使用动态库。

完成了链接之后 ,gcc 就可以生成可执行文件(默认情况下gcc选择动态链接)

动静态链接的优缺点:

静态链接之后不再需要依赖函数库,可独立存在,但文件的体积变得会很大。

动态链接之后文件的体积很小,但必须依赖函数库才能运行。

链接后的可执行程序可用 ./ 运行

如下示例(gcc不带选项时可以直接生成可执行程序)

Linux项目的自动化构建

我们每次要生成可执行程序都需要输入gcc或g++指令,清理可执行程序都需要用rm指令。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。我们需要不断输入gcc指令或g++指令和rm指令来完成上述操作吗?

答案是不需要,我们只需要在源文件目录下创建名为makefile的文件,将生成和清理可执行程序方案的指令保存到该文件,再通过make一个命令工具解释makefile文件中的指令完成项目的编译和清理工作。

也就是说makefile是文件,make是指令,以此来完成自动化构建。

那么怎么在在makefile文件中保存相关指令呢?假设我们有test.c源文件,想要生成test可执行程序。需要有如下格式

生成可执行程序

依赖关系,两个文件的依赖关系用冒号分隔,冒号左边的文件依赖于冒号右边的文件,如果可执行程序依赖多个源文件,多个源文件之间需要用冒号分隔。

test : test.c

依赖方法,文件之间建立关系之后需要指定方法。

gcc test.c -o test

如下示例

清理可执行程序

rm依赖方法不需要构建文件之间的依赖关系,其依赖关系为空

如下示例

Linux调试器-gdb使用

程序的发布方式有两种, debug 模式和 release 模式

Linux gcc/g++ 出来的二进制程序,默认是 release 模式

要使用 gdb 调试,必须在源代码生成二进制程序的时候 , 加上 - g 选项

退出: ctrl + d quit

list l 行号:显示 binFile 源代码,接着上次的位置往下列,每次列 10 行。

list l 函数名:列出某个函数的源代码。

r run :运行程序。

n next :单条执行。

s step :进入函数调用

break ( b ) 行号:在某一行设置断点

break   函数名:在某个函数开头设置断点

info break :查看断点信息。

finish :执行到当前函数返回,然后挺下来等待命令

print ( p ) :打印表达式的值,通过表达式可以修改变量的值或者调用函数

p 变量:打印变量值。

set var :修改变量的值

continue ( c ) :从当前位置开始连续而非单步执行程序

run ( r ) :从开始连续而非单步执行程序

delete breakpoints :删除所有断点

delete breakpoints n :删除序号为 n 的断点

disable breakpoints :禁用断点

enable breakpoints :启用断点

info ( i ) breakpoints :参看当前设置了哪些断点

display 变量名:跟踪查看一个变量,每次停下来都显示它的值

undisplay :取消对先前设置的那些变量的跟踪

until X 行号:跳至 X

breaktrace ( bt ) :查看各级函数调用及参数

info i ) locals :查看当前栈帧局部变量的值

quit :退出 gdb

git和gitee

git是一款开源的软件,它即可以是服务端也可以是客户端。git的主要功能是保存代码的不同版本,也可以完成多人协作。

gitee是基于git内核写的网页版git,只需在官网注册账号即可使用。

在Linux操作系统下载git只需输入yum install git指令即可

如何将本地代码推送到远端仓库呢(gitee)

下载项目到本地

创建好一个放置代码的目录 .

git clone [url]

这里的 url 就是刚刚建立好的 项目 的链接

三板斧第一招 : git add

将代码放到刚才下载好的目录中

git add [文件名]

先将要提交的文件拷贝到仓库目录下

三板斧第二招 : git commit

提交改动到本地

git commit -m "日志信息"

提交的时候应该注明提交日志 , 描述改动的详细内容

如果是第一次使用git,会提示你输入两条指令,一条指令用来保存你的邮箱,一条保存你的名字

三板斧第三招 : git push

git push

同步到远端服务器上

需要填入用户名密码

相关文章
|
6天前
|
Linux
Linux 操作系统
在 Linux 中,UID(用户 ID)是标识用户身份的重要概念。UID 唯一标识每个用户,通过 UID 可区分不同用户类别:UID 0 为超级用户,1-999 为系统用户,1000 及以上为普通用户。因此,正确选项为:UID 标识用户、可区分用户类别、普通用户 UID 大于 1000。
|
1月前
|
存储 人工智能 JavaScript
Harmony OS开发-ArkTS语言速成二
本文介绍了ArkTS基础语法,包括三种基本数据类型(string、number、boolean)和变量的使用。重点讲解了let、const和var的区别,涵盖作用域、变量提升、重新赋值及初始化等方面。期待与你共同进步!
112 47
Harmony OS开发-ArkTS语言速成二
|
1月前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
112 23
|
2月前
|
开发框架 JavaScript 前端开发
Harmony OS开发-ArkT语言速成一
本文介绍ArkTS语言,它是鸿蒙生态的应用开发语言,基于TypeScript,具有静态类型检查、声明式UI、组件化架构、响应式编程等特性,支持跨平台开发和高效性能优化。ArkTS通过强化静态检查和分析,提升代码健壮性和运行性能,适用于Web、移动端和桌面端应用开发。关注我,带你轻松掌握HarmonyOS开发。
70 5
Harmony OS开发-ArkT语言速成一
|
1月前
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
68 6
|
1月前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
2月前
|
存储 缓存 网络协议
Linux操作系统的内核优化与性能调优####
本文深入探讨了Linux操作系统内核的优化策略与性能调优方法,旨在为系统管理员和高级用户提供一套实用的指南。通过分析内核参数调整、文件系统选择、内存管理及网络配置等关键方面,本文揭示了如何有效提升Linux系统的稳定性和运行效率。不同于常规摘要仅概述内容的做法,本摘要直接指出文章的核心价值——提供具体可行的优化措施,助力读者实现系统性能的飞跃。 ####
|
6天前
|
运维 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot 是阿里云推出的一款操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行和系统运维调优等功能。通过简单的命令行操作,用户可以快速获取所需信息并执行任务,极大提升了Linux系统的使用效率。安装步骤简单,只需在阿里云服务器上运行几条命令即可完成部署。使用过程中,OS Copilot不仅能帮助查找命令,还能处理文件和复杂场景,显著节省了查找资料的时间。体验中发现,部分输出格式和偶尔出现的英文提示有待优化,但整体非常实用,特别适合Linux初学者。
51 10
|
3月前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
116 0
Vanilla OS:下一代安全 Linux 发行版
|
1月前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
136 2
OS Copilot-操作系统智能助手-Linux新手小白的福音