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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot Logback 不同环境,配置不同的日志输出路径

1.背景: mac 笔记本开发,日志文件写到/data/logs/下,控制台报出:Failed to create parent directories for [/data/logs/........... 再去手动在命令窗口创建文件夹data,报Read-only file system 2.修改logback-spri…

Hbase的shell命令(详细)

一、help 1.help 显示命名的分组情况 2.help 命令名称 查看命令的具体使用,包括命令的作用和用法。 举例:help list 二、general 组(普通命令组) 命令 描述 …

Redux极客园项目初始化搭建

基本结构搭建 实现步骤 在 Login/index.js 中创建登录页面基本结构在 Login 目录中创建 index.scss 文件,指定组件样式将 logo.png 和 login.png 拷贝到 assets 目录中 代码实现 pages/Login/index.js import ./index.scss import { Card, Form, Input, Button }…

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新(正式比赛)

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新(正式比赛) 往期链接: 【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—解题全流程(…

安防视频监控/视频集中存储EasyCVR平台级联时,下级平台未发流是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

PPTist在线编辑、播放幻灯片

PPTist简介 “一个基于 Vue3.x TypeScript 的在线演示文稿(幻灯片)应用,还原了大部分 Office PowerPoint 常用功能,支持 文字、图片、形状、线条、图表、表格、视频、音频、公式 几种最常用的元素类型,每一种元素都拥…

免费申请泛域名证书

通配符证书是一种比较特殊的SSL/TLS 证书,可用于保护多个域名(含主域名),由域名字段中的通配符 (*) 指示。这种证书主要用于具有很多子域的组织。通配符证书对主域及其所有次级子域有效。 对于免费通配符证书而言,目前…

【C++杂货铺】继承

目录 🌈前言🌈 📁 继承的概念和定义 📂 概念 📂 定义 📁 基类和派生类对象赋值转换 📁 继承中的作用域 📁 派生类的默认成员函数 构造函数 析构函数 拷贝构造函数 赋值重载…

ppt技巧:​如何将两个PPT幻灯片文件合并成一个?

第一种方式:复制粘贴幻灯片 1. 打开第一个PPT幻灯片文件,确保你已经熟悉该文件的内容和布局。 2. 打开第二个PPT幻灯片文件,浏览其中的所有幻灯片,选择你想要合并到第一个文件中的幻灯片。 3. 使用快捷键CtrlC(Wind…

【C++类和对象】拷贝构造与赋值运算符重载

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

GAN反演+老照片修复

关于老照片修复~~~~~上图为运行腾讯ARC的模型之后的效果图 其使用的模型,GFP-GAN,Towards Real-World Blind Face Restoration with Generative Facial Prior,理解记录如下: Abstract: In this work, we propose GFP-GAN that …

m4p转换mp3格式怎么转?3个Mac端应用~

M4P文件格式的诞生伴随着苹果公司引入FairPlay版权管理系统,该系统旨在保护音频的内容。M4P因此而生,成为受到FairPlay系统保护的音频格式,常见于苹果设备的iTunes等平台。 MP3文件格式的多个优点 MP3格式的优点显而易见。首先,其…

微服务分布式缓存:无法反序列化 Cannot deserialize;

问题描述 在拆分SpringBoot项目搭建微服务的过程中,需要配置分布式缓存,对redis进行配置,配置完成后,在启动Knife4j文档界面时报错,发现是redis无法反序列化的问题,但是报错中所指出的类com.jhin.jhinoj.m…

Prometheus + Grafana 搭建监控仪表盘

目标要求 1、需要展现的仪表盘: SpringBoot或JVM仪表盘 Centos物理机服务器(实际为物理分割的虚拟服务器)仪表盘 2、展现要求: 探索Prometheus Grafana搭建起来的展示效果,尽可能展示能展示的部分。 一、下载软件包 监控系统核心…

OpenHarmony实战开发-NAPI封装ArkTS接口案例。

介绍 部分应用的主要开发语言为C/C,但是HarmonyOS的部分接口仅以ArkTS的形式暴露,因此需要将ArkTS的接口封装为Native接口。本例以DocumentViewPicker的Select方法为例,提供了Napi封装ArkTS API的通用方法,本例包含内容如下&…

ElasticSearch有账号密码时: kibana配置

上一篇文章我们介绍过ElasticSearch关闭账号密码的的方式: config/elasticsearch.yml文件中 xpack.security.enabled: false 当我们关闭 账号密码,kibana是可以直接访问ElasticSearch的。 真实项目中,我们是不允许数据库裸跑的,所…

vue elmentui 可编辑table 实现

废话不多说上图: 1.可编辑input 2.可编辑下来框 3.点击chechbox 4.可编辑radio 其实后面两种可以直接显示值 需要修改直接改就行 保持风格统一所以就做了点击之后出现修改功能 上代码,不要哔哔 哈哈 粗暴 真得是曲不离口 拳不离手, 几天…

Linux下:指令的理解、本质、shell

文章目录 理解文件的属性目录结构快捷键上下historytable两下CTRL CCTRL D关机命令 文件互传shell命令及其运行原理指令的本质命令whoamiwhopwdlsclearcdtreectrl ctouchstatmkdirrmdir && rmmancpmvwhichalisacattacecho> 输出重定向>> 追加重定向< 输…

如何在Windows安装Ollama大语言模型工具并实现无公网IP异地远程使用

文章目录 前言1. 运行Ollama2. 安装Open WebUI2.1 在Windows系统安装Docker2.2 使用Docker部署Open WebUI 3. 安装内网穿透工具4. 创建固定公网地址 前言 本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具&#xff0c;并安装Open WebUI结合cpolar内网穿透软…

数字乡村创新实践探索农业现代化路径:科技赋能农业产业升级、提升乡村治理效能与农民幸福感

随着信息技术的快速发展和数字化时代的到来&#xff0c;数字乡村建设正成为推动农业现代化、提升农业产业竞争力、优化乡村治理以及提高农民幸福感的重要途径。本文将围绕数字乡村创新实践&#xff0c;探讨其在农业现代化路径中的积极作用&#xff0c;以及如何通过科技赋能实现…