首页 > 系统相关 >Linux命令基础——08-linux-day02(vim-gcc-library)

Linux命令基础——08-linux-day02(vim-gcc-library)

时间:2022-11-08 20:04:38浏览次数:75  
标签:gcc lib day02 08 sudo vim so 光标

在学习Linux命令基础总结了笔记,并分享出来。

08-linux-day02(vim-gcc-library)

目录:
一、学习目标
二、vim
1、vim光标的移动
2、vim删除内容
3、vim复制粘贴与可视模式
4、vim查找、格式调整、查看man文档
5、vim从命令模式到编辑模式
6、vim行末查找替换与保存退出
7、vim分屏模式
8、vim的设置
三、gcc编译
1、gcc编译流程
2、gcc流程和相关参数
3、gcc编译参数2
4、gcc补充说明
四、库
1、静态库的制作和使用
2、动态库的制作
3、动态库的使用
4、静态库和动态库的总结

 

一、学习目标

1、掌握vim命令模式下相关命令的使用

2、掌握从命令模式切换到编辑模式的相关命令

3、掌握vim末行模式下相关命令的使用

4、能够说出gcc的工作流程和掌握常见参数的使用

5、熟练掌握Linux下的静态库的制作和使用

6、熟练掌握Linux下的共享库的制作和使用

 

二、vim

1、vim光标的移动


vi与vim——vim是vi增强版

》安装vim:sudo apt-get install vim

》设置vim作为默认的文本编辑器

  sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 1

  sudo update-alternatives --set editor /usr/bin/vim

  sudo update-alternatives --install /usr/bin/vi vi /usr/bin/vim 1

  sudo update-alternatives --set vi /usr/bin/vim

》查看vim教程文档:vimtutor


移动光标:

h:左;j:下:;k:上;l:右

0:行首;$(Shift+4):行尾

gg:文件第一行

G:文件尾部

12D:调到第12行

 

2、vim删除内容

x:删除光标所在的位置字母

u:撤销

X:删除光标之前的位置字母

dw:删除单词和一个空格(光标要定位到单词的第一个字母)

d$(d+Shift+4)删除光标到行尾

d0:删除光标到行头

D:删除光标到行尾,同d$

dd:删除光标所在行(剪切)

ndd:删除光标所在行开始n行

DD:删除两行

 

3、vim复制粘贴与可视模式

yy:复制一行内容

dd:剪切一行内容

nyy:复制n行内容

p/P:粘贴(注意:粘贴行不一样!)

r:替换,输入r之后,再输入一个字母

》可视模式

  v进入可视模式;

  移动光标选中内容;

  按y复制内容;

  移动光标到目的地

  按p/P将内容粘贴

  

4、vim查找、格式调整、查看man文档

》查找

/srcpattern

  n/N:进行遍历,注意向前还是向后

?srcpattern

  n/N:进行遍历,方向与/的方式相反

#:光标移动到字符串上,按#,可以查找该字符串

 

》格式调整:

  gg=G:代码文件整体调整格式

  >>当前行向右移动一个Tab

  <<当前行向左移动一个Tab

  n>>当前行开始n行,向右移动一个Tab

  n<<当前行开始n行,向左移动一个Tab

 

》man帮助查看K或者n+K

 

5、vim从命令模式到编辑模式

命令模式变为编辑模式(啊,IOS)

  i:在光标前插入

  a:在光标后插入

  I:在行首插入

  A:在行尾插入

  o:下一行插入

  O:上一行插入

  s:删除当前字母,变为插入模式

  S:删除当前行,进入插入模式

 

6、vim行末查找替换与保存退出

Linux命令基础——08-linux-day02(vim-gcc-library)_静态库

》末行模式:(输入:进入末行模式)

执行命令

  :!ls -l

 

》代码替换

  :s/src/des/——只会替换当前行第一个匹配的src为des

  :s/src/des/g——只会替换当前行所有的src为des

  :%s/src/des/——只会替换所有行的第一个匹配src为des

  :%s/src/des/g——替换文件内容所有的src为des 

 

》保存退出

  :wq——保存退出

  :w——只保存

  :q——只推出,文件不能修改

  :q!——强退

  :x——保存退出

  ZZ——保存退出(命令模式下)

 

7、vim分屏模式

:sp——横分

:vsp——竖分

:qall——全退,不保存

:wqall——全保存

 

8、vim的设置


vim下载:​​https://github.com/chxuan/vimplus​

安装vimplus

git clone https://github.com/chxuan/vimplus.git ~/.vimplus
cd ~/.vimplus
./install.sh
git clone https://github.com/chxuan/vimplus.git ~/.vimplus
cd ~/.vimplus
./install.sh

/home/user/.vimrc——本用户的配置文件(user要替换为对应用户名)

/etc/vim/vimrc——系统vim配置文件

Linux命令基础——08-linux-day02(vim-gcc-library)_vim_02

set -o vi,在系统环境设置此项,可以在当前shell环境下使用vi快捷键。

注意:终端需要重启或者执行(~/.bashrc)才能生效!

 

三、gcc编译

1、gcc编译流程

Linux命令基础——08-linux-day02(vim-gcc-library)_动态库_03

 

2、gcc流程和相关参数

-c——>编译成.o文件

-E——>输出到标准输出,宏替换,头文件展开

-S——>编译成汇编

-i——>包含头文件路径(可以绝对路径,可以相对路径)

  如:gcc add.c -i./include/ -D DEBUG -o app -g -Wall -O1

-o——>目标文件

-D——>指定宏编译

 

3、gcc编译参数2

-L——>包含库文件路径

-l——>(小写L)指定库名称(通常libxxx.so或者libxxx.a,-lxxx)

-r——>编译成.o文件

-g——>用户gdb调试,不加此选项不能gdb调试

-Wall——>(warning all)显示更多的警告

-lstdc++——>编译c++代码

  如:gcc hello.cpp -lstdc++ -o cpp -O

-O——>优化选项,1-3越高优先级越高

 

4、gcc补充说明

Ctrl+W+W:多屏切换

 

四、库

1、静态库的制作和使用

静态库的文件命名格式:libxxx.a(相当于Windows下的xxx.lib)

》制作步骤

(1)编译为.o文件

(2)将.o文件 打包:ar rcs libmycalc.a file1.o file2.o file3.o...

    nm libmycalc.a——>查看libmycalc.a文件文件内容

(3)将头文件与库一起发布

  如:将libmycalc.a移动到lib文件夹下

  运行:gcc main.c -o app -i include/ -L lib/ -lmycalc(小写L)

》使用

  编译时需要加静态库名(记得路径),-i包含头文件

Ubuntu下计算器:bc(退出:quit)

 

2、动态库的制作

Linux命令基础——08-linux-day02(vim-gcc-library)_静态库_04

动态库的文件命名格式:libxxx.so(相当于Windows下的xxx.dll)

》制作步骤

(1)编译与位置无关的代码,生成.o,关键参数-fPIC(有的Linux可以不加,为了统一,都加上!)

  如:gcc -fPIC -c *.c -I ../include/ (大写i)

(2)将.o文件打包:关键参数-shared

  如:gcc -shared -o libCalc.so *.o

(3)将库与头文件一起发布

  如:将libCalc.o移动到lib文件夹下

  运行:gcc main.c -o app -i include/ -L lib/ -lCalc(小写L)报错:找不到链接libCalc.so!

    ldd app——检查链接(小写L)

      得到:libCalc.so=> not found

 

3、动态库的使用

》使用

(1)-L指定动态库路径,-l指定库名

  如:gcc main.c -o app -i include/ -L lib/ -lCalc(小写L)

(2)解决不能加载动态库的问题

  1.拷贝到系统的/lib下,不允许

    也可以使用软链接:sudo ln -s lib/libCalc.so /lib/libCalc.so(相对路径不行)

    删除软链接:sudo rm /lib/libCalc.so

    使用当前路径:sudo ln -s ~/linux/cmd/Calc/lib/libCalc.so /lib/libCalc.so

  2.将库路径添加到环境变量,修改LD_LIBRARY_PATH环境变量,用冒号分隔,不是特别推荐

  echo $LD_LIBRARY_PATH

  export LD_LIBRARY_PATH=/home/wang/linux/cmd/Calc/lib/:$LD_LIBRARY_PATH

    export只是一次生效

    要永久生效,把路径放入.bashrc中

  3.配置/etc/ld.so.conf文件,增加/home/wang/cmd/Calc/lib路径,执行sudo idconfig -v

  sudo vi /etc/ld.so.conf——打开ld.so.conf增加:

    /home/wang/linux/cmd/Calc/lib

  sudo ldconfig -v——设置生效

 

4、静态库和动态库的总结

》静态库优缺点总结

  优点:1)执行速度快;2)发布应用时不需要发布库

  缺点:1)执行程序体积会变比较大;2)库变更时需要重新编译应用

》动态库优缺点总结

  缺点:1)执行时需要加载动态库,相对而言,比静态库慢;2)发布应用时需要同时发布动态库

  优点:1)执行程序体积小;2)库变更时,一般不需要重新编译应用(如:接口更改,两数相加改为三数相加,需要重新编译)

 

 

 

 

在学习Linux命令基础总结了笔记,并分享出来。

标签:gcc,lib,day02,08,sudo,vim,so,光标
From: https://blog.51cto.com/u_15405812/5834771

相关文章

  • Linux命令基础——vim+gcc+ibrary
    在学习Linux命令基础总结了笔记,并分享出来。08-linux-day02(vim-gcc-library)目录:一、学习目标二、vim1、vim光标的移动2、vim删除内容3、vim复制粘贴与可视模式4、vim查找......
  • 11.08
    今日内容1.面向对象的魔法方法2.魔法方法笔试题3.元类简介4.创建类的两种方式5.元类定制类的产生行为6.元类定制对象的产生行为7.魔法方法之双下new8.设计模式简介......
  • Day02 配置环境变量
    配置环境变量卸载JDK删除java的安装目录删除java_HOME删除path下关于java的目录DOS命令java-version验证安装JDK百度搜索JDK8,找到下载地址同意协议......
  • 20220802 鸟哥 Linux 私房菜【归档】
    参考资料鸟哥Linux私房菜-基础学习篇(第四版)鳥哥私房菜-基礎學習篇目錄-forCentOS7环境信息CentOS7.x书中使用版本:7.1练习使用版本:7.9目录00.计算......
  • 20220804 02. 主机规划与磁盘分区
    2.1Linux与硬件的搭配虽然个人计算机各元件的主要接口是大同小异的,包括前面第零章计算机概论讲到的种种接口等,但是由于新的技术来得太快,Linux核心针对新硬件所纳入的驱......
  • 20220803 01. Linux是什么与如何学习
    1.1Linux是什么Linux就是一组软件1.1.1Linux是什么?操作系统/应用程序?Linux就是一套操作系统Linux就是核心与系统调用接口那两层早期的Linux是针对386来开发的Tor......
  • 20220807 04. 首次登陆与线上求助
    4.1首次登陆系统s一般来说,我们不建议您直接使用root的身份登陆系统喔!请使用一般帐号登陆!等到有需要修改或者是创建系统相关的管理工作时,才切换身份成为root!为什么......
  • 20220810 06. Linux 文件与目录管理
    6.1目录与路径6.1.1相对路径与绝对路径路径(PATH)绝对路径:路径的写法“一定由根目录/写起”,例如:/usr/share/doc这个目录。相对路径:路径的写法“不是由/写起......
  • 20220818 09. vim 程序编辑器
    在所有的Linuxdistributions上头都会有的一套文书编辑器就是vi,而且很多软件默认也是使用vi做为他们编辑的接口,因此鸟哥建议您务必要学会使用vi这个正规的文书编......
  • 20220816 08. 文件与文件系统的压缩,打包与备份
    8.1压缩文件的用途与技术目前我们使用的计算机系统中都是使用所谓的Bytes单位来计量的!不过,事实上,计算机最小的计量单位应该是bits才对1Byte=8bits压缩解......