Linux 操作系统编译器、静态库、动态库

1、编辑器

1.1、vim的安装

指令:sudo apt-get install vim

1.2 vim的使用

        格式:vim 文件名

        如果文件存在,只打开,文件不存在,创建并打开

        vim的4中模式:

        命令模式,插入模式,底行模式,可视模式

1.2.1命令模式

复制,粘贴,删除,剪切等

切换命令模式

1直接vim打开文件,默认就是命令模式

2不管当前是什么模型,按下Esc就可以快速回到命令模式

复制指令:

        yy--复制光标所在位置的一整行

        nyy--复制光标所在位置往下n整行

        yw--复制光标所在位置的一个单词

        nyw--复制光标所在位置往后的n个单词

粘贴:

        p--粘贴

删除/剪切

        x--删除光标所在位置的单字符

        X--删除光标所在位置的前一个位置的单字符

        dd--删除/剪切光标所在位置的一整行

        ndd--删除/剪切光标所在位置的往下的n整行

        dw--删除/剪切光标所在位置的第一个单词

        ndw--删除/剪切光标所在位置的往后的n个单词

        d$ 删除/剪切光标所在位置到行尾的所有内容

        d^ 删除/剪切光标所在位置到行首的所在内容

撤销:u

反撤销:ctrl + r

gg--光标快速回到文件开头

G -- 光标快速回到文件末尾

gg=G 文件中的内容会格式化对齐

1.2.2 插入模型--编写程序

切换插入模式:第一步先回到命令模式(Esc)

i: 插入到光标所在位置
I: 插入到光标所在位置的行首
a: 插入到光标所在位置的下一个位置
A: 插入到光标所在位置的行尾
o: 插入到光标所在位置的下一行
O: 插入到光标所在位置的上一行
记其中任意一个即可

1.2.3 底行模式

字符串替换,查找,保存,退出

方式1:切换底行模式

第一步先回到命令模式(Esc)

第二步输入冒号切换底行模式

保存:w+(回车)

退出: q+(回车)

保存并退出:wq+(回车)

强制退出:q!(回车)

文本替换:

        整体替换:%s/原本的字符串/新的字符串/g

        部分替换:m,ns/原本的字符串/新的字符串/g

整行换位置:

        :xmy         将第X行,移动到第y行的后边

方式2:切换底行模式

第一步先回到命令模式(Esc)

第二步输入:(切换底行模式)

字符串查找:

/字符串(回车)

n 往后继续查找

N 往前继续查找

1.2.4可视模型--复制,剪切

先回到命令模式(Esc),再用V切换到可视模式(一次有效)

y--复制         d--剪切        x--删除

2 编译器

2.1 编译流程:


1:预处理:gcc-E main.c -o main.i

2 : 编译(转汇编):gcc -S main.i -0 main.s

3 :汇编(转二进制):as main.s -o main.o

4 :链接(衔接库):gcc main.o -o main

2.2 gcc 的参数

-c:只编译,不衔接,相当于编译流程的前三步

-o: 重命名

-I(大写的i):后面紧跟头文件路劲

-l(小写的L):后面库名

-L:后面跟库路径(即使是当前路径也要加)

-g:生成带有调试信息的可执行程序

使用 gdb做调试。需要加参数-g

3 库

3.1 库的作用

保护源码,方便移植

3.2 LInux下库的分类

静态库,动态库;

3.3:静态库

特点:以空间换时间,在生成可执行程序的时候,复制了一份库到当前的可执行程序中,生成的可执行程序较大,浪费空间,但是节省时间。

制作流程:

第一步:准备功能函数(不能有main函数):这里以加减乘除的功能函数为例,指令以Fun.c为例。

第二步:将功能函数的.c只编译不链接,生成.o

指令:gcc -c Fun.c -o Fun.o

第三部:ar -rc libxxx.a *.o         --xxx-库名

验证库:

方式1:.h 不封装

方式2:.h文件封装到include 中,需要指名头文件路径

3.4 动态库

特点:以时间换空间,在生成可执行程序的时候,保留了库中函数的入口到当前的可执行程序中,真正运行的时候,去相应的库里执行函数,浪费了时间,但是节省空间。

制作流程:

第一步:准备功能函数(不能有main函数):Fun.c

第二步:打包成库

指令:

gcc -c -fpic Fun.c -o Fun.o

第三部:打包成库

指令:

gcc -shared -fpic -o libXXX.so *.o XXX-库名

验证库:

1->将库放到指定路劲下:sudo mv 库名 /usr/lib

指令:

sudo mv liblood.so /usr/lib

2->gcc main.c -o mian -liblood -I./include

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/636172.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java代码基础算法练习-数组整合-2024.04.21

任务描述: 现给出两个数组,每个数组都有10个元素,请求两个数组的交集,如交集为空,请输出 NULL,否则输出交集元素(数组元素取值范围0~1000)。 任务要求: 代码示例&#xf…

EI级 | Matlab实现VMD-TCN-LSTM-MATT变分模态分解卷积长短期记忆神经网络多头注意力多变量时间序列预测

EI级 | Matlab实现VMD-TCN-LSTM-MATT变分模态分解卷积长短期记忆神经网络多头注意力多变量时间序列预测 目录 EI级 | Matlab实现VMD-TCN-LSTM-MATT变分模态分解卷积长短期记忆神经网络多头注意力多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matl…

docker (CentOS,ubuntu)安装及常用命令

Docker和虚拟机一样,都拥有环境隔离的能力,但它比虚拟机更加轻量级,可以使资源更大化地得到应用 Client(Docker客户端):是Docker的用户界面,可以接受用户命令(docker build&#xff…

AI生图美学在淘宝的实践应用

本文介绍了如何制定和应用美学标准来评估和改善人工智能生成的图像质量,特别是在电商领域的应用,主要分为制定美学标准、训练美学模型、应用美学模型、升级淘宝风格模型四个步骤。 美学的定义与分析 图像质量标准:现代设计框架下,…

CCIE-16-PIM

目录 实验条件网络拓朴实验环境实验目的 开始实验实验1:PIM-DM配置PIM域中的路由,开启PIM-DM组播路由功能,验证组播情况 实验2:PIM-SM(静态RP)配置PIM域中的路由,开启PIM-SM组播路由功能&#x…

什么是大语言模型以及如何构建自己的大型语言模型?

一、关于大语言模型 LLM 对于无数的应用程序非常有用,如果我们自己从头开始构建一个,那我们可以了解底层的ML技术,并可以根据特定需求定制LLM,但是对资源的需求巨大。大型语言模型是一种 ML 模型,可以执行各种自然语言…

性能直逼GPT4,Llama3的三种在线体验方式

周五凌晨,Meta发布了其最新的开源大语言模型Llama-3,据说性能直逼GPT-4。 前两天百度老板刚刚批了一下开源模型,说开源模型打不过闭源模型,没想到这么快就被打脸了。 自从Sora之后,OpenAI也好久没有发布震撼人心的能…

idea 将项目上传到gitee远程仓库具体操作

目录标题 一、新建仓库二、初始化项目三、addcommit四、配置远程仓库五、拉取远程仓库内容六、push代码到仓库七、如果是私有仓库可能会拉取失败(一)需要增加SSH 公钥(二)把远程仓库地址换成ssh的连接八、如果是私有仓库&#xff…

centos7搭建git服务器

1.centos7安装git yum install -y git yum install -y git-daemon 2.初始化空目录仓库 mkdir /usr/local/git mkdir /usr/local/git/projects mkdir /usr/local/git/projects/test-projects.git cd test-projects.git git --bare init 3.修改目录权限 cd .. chmod 775 tes…

【linux运维】系统常见管理命令

系列综述: 💞目的:本系列是个人整理为了学习基本的shell编程和linux命令,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于b站大学——linux运维课程进行的,…

Parade Series - CoreAudio Loopback

Scenario 鉴于业务场景需要, 经过技术路径探索, 发现 comtypes 兼容性过于混乱,故而考虑整合一个 CoreAudio 的轮子dll来解决实际问题!std::StringStream ⇒ std::ios::binary ⇒ std::ofstream Loopback.dll #ifndef _DLL_C…

Git - 在PyCharm/Idea中集成使用Git

文章目录 Git - 在PyCharm/Idea中集成使用Git1.新建GitHub仓库2.将仓库与项目绑定3.在PyCharm中使用Git4.新建Gitee仓库5.将仓库与项目绑定6.在IDEA中使用Git Git - 在PyCharm/Idea中集成使用Git 本文详细讲解了如何在 PyCharm 或 Idea 中配置 Gitee 或 GitHub 仓库&#xff0…