Linux下软件的安装分为源码安装和工具安装
源码安装:需要手动依赖关系库
工具安装:自动解决依赖关系库
IDE = vim + gcc + gdb
-
vim:编辑器(有12种模式,常用的有三种:普通、插入、底行)
普通模式: i--光标所在位置插入 I--光标所在行首插入
a--光标所在位置后插入 A--光标所在行尾插入
o--光标所在行下行插入 O--光标所在行下行插入
gg:光标移动到文本开头 G:光标移动到文本末尾
n+方向键:向左、右移动多少个字符 | 向上、下移动多少行
n+G 或者直接n+[Enter]:移动光标至第n行
- 常用命令:复制yy、粘贴p/P、
删除字符x、删除单词dw、删除所在行dd
撤销u、恢复撤销ctrl+r
nG第几行、 H(左)、J(下)、K(右)、L(上)一个字符
w(上)、b(下)一个单词 | ctrl b(上)/f(下)页
底行模式: (以:或者 / 开头)
退出[:q]、保存[:w]、保存退出[:wq]、退出不保存[:q!]
[:set nu/nonu]:一些配置 临时执行一些命令:[:!指令]
向下匹配字符串:[/string]、 向上匹配字符串:[?string]
字符串替换:[:1,$s/str1/str2/gc] ($为最后一行)
匹配光标所在单词:[/shift '#'/'*']、
匹配‘}:’[/shift %]
新建一个文件[:vnew filename]、[gg=G]:全文对齐
块选择:[v]/[ctrl v]-------y复制、d删除、p粘贴
批量注释:
Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I 进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,按两下 ESC,Vim 会自动将你选中的所有行首都加上注释,保存退出完成注释。
取消注释:
Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意 // 要选中两个,选好之后按 d 即可删除注释,ESC 保存退出。
-
gcc:编译器(脚本程序:效率低、高级编译程序:性能高)
将高级语言识别为机器指令
预处理: gcc -E main.c -o main.i
编译: gcc -S main.i -o mian.s
汇编: gcc -c main.s -o main.o
链接: gcc mian.c -o main -L -l库名称
gcc的链接方式默认使用动态库、默认生成Release版本文件
静态链接:静态库在编译时会连接到目标代码,程序运行时不再需要静态库
动态链接:在编译期不会连接到目标代码,运行时载入,程序运行时需要动态库存在
简单的动态链接和静态链接:https://blog.csdn.net/Q_feifeiyu/article/details/90273691
-
gdb:调试器(Linux下gcc默认生成Release版本,而Debug版本才存在调试信息)
gcc -g mian.c -o main 添加符号调试信息,生成Debug版本程序
加载调试程序:gdb ./main 不接收任何参数
获取运行参数:gdb [enter] ->file ./main ->r [参数列表]
打印变量内容:p 变量名、watch 变量
单步调试:start开始 ->s--F11 | n--F10 ->l / until 行号 ->q
打断点:b 文件名:行号、break 函数名、
ib查看断电信息、d 序号删除断点
执行到当前函数返回:finish
查看调用栈信息:bt(快速定位程序崩溃位置)
readelf命令,一般用于查看ELF格式的文件信息,常见的文件如在Linux上的可执行文件,动态库(*.so)或者静态库(*.a) 等包含ELF格式的文件
<-s> :symbols 显示符号表段中的项 <-a>:显示全部信息
-
Makefile:项目自动化构建工具(寻找makefile文件并执行)
预定义变量:$@--目标对象、$^所有依赖对象、
$<第一个依赖对象
Makefile编写规则:
-》src=$(wildcard ./*.c)---获取.c结尾的所有文件
obj=$(patsubst %.c,%.o,$(src))----字符串替换
-》all:mubiaoduixiang
-》目标对象:依赖对象
-》[tab] 命令操作...
-》%.o:%.c
[tab] gcc -c $< -o $@
-》.PHONY(声明伪对象) :clean------用于清理文件
rm $(obj) [目标对象列表]
Makefile执行规则:只生成1个目标对象,在makefile中寻找,
执行响应的命令操作
make执行,智能化:如果两次生成没有变化,不会重新进行编译
-
git:项目版本控制工具(.git/config配置git信息免密提交)
下载:git clone http:...
提交:git add 文件列表
git commit -m “备注信息”
上传:git push origin master
查看分支信息:git branch
-
yum:软件包管理工具(更改yum源:/etc/yum.repo配置文件里)
查看:yum list | grep 包名
yum list installed | grep 包名
安装:yum install 包名
移除:yum remove 包名
-
rpm安装:Redhat Package Manager ,用于管理Linux 下软件包的软件
安装:rpm -ivh 包名 显示正在安装的文件信息和安装进度
FTP来安装软件包:rpm + url地址
卸载:rpm -e 包名
升级:rpm -Uvh,会自动卸载相应软件包的老版本
查询:rpm -q 包名 查询
-a :查询目前系统安装的所有软件包。
-f 文件名 :查询包括该文件的软件包。
-F :同-f参数,只是输入是标准输入(例如 find /usr/bin | rpm -qF)
-q 软件包名 : 查询该软件包
验证: rpm -vf
prm和yum的区别:
输入rpm -i +软件包确实可以下载,但是前提有个叫源的东西也就是软件仓库,所以yum有对应的源,但是rpm却没有所以才下载不了。rpm最大的功能是安装软件包并非下载,当然下载也可以(一般不用rpm下载),rpm具有严重包依赖关系,不推荐
rpm的缺陷:
- 安装环境必须与打包环境一致
- 需要满足套件的相依属性需求
- 反安装需要小心,最底层套件不可移除
rpm命名规则
- name -version -arch.rpm
- name -version -arch.src.rpm
el* 软件包
devel开发包
noarch可以应用任一平台
-
lrzsz:文件传输工具
传至虚拟机:rz
传至主机:sz filename
-
wget:文件下载工具
wget+链接
- 缓冲区对文件读写的影响:数据先被写入到buf中,等buf写满或者手动刷新缓冲区时,数据才真正被写入文件printf(“hello\n”)---->【缓冲区】----->显示器[stdout]
‘\n’对于显示器文件,具有刷新缓冲区的作用; ‘\r’回车符--将输入/输出位置移动到行首
更改yum源
ps:CentOS默认yum是国外服务器,国内进行访问或者下载一些东西的时候稍微有些卡顿,但是可以通过更改yum源修改为国内的163或者aliyun来提高下载速度(虚拟机需要联网进行)
注意! 1.将之前的repo文件备份一下,以防万一
2.要通过yum下载上面的文件下载工具 ----wget yum install wget -y
下面是一个更改为163,在第3步下载网易163源时候把wget http://mirrors.163.com/.help/CentOS7-Base-163.repo,更改为aliyun源wget http://mirrors.aliyun.com/repo/Centos-7.repo即可,然后将aliyun.repo设置改为默认的配置文件 mv CentOS7-Base-aliyun.repo CentOS-Base.repo(或者直接通过wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 一键完成下载和设置为默认配置)
https://blog.csdn.net/qq_18831583/article/details/79146759
配置git
只是一些简单的用户配置,在push到服务器的时候可以不用输入账号密码
// 1.配置账户、邮箱
git config --global user.name "username"
git config --global user.email "email"
// 2.在家目录下执行下面这条指令,然后vim ~/.gitconfig查看到多出来
// [credential]
// helper = store
git config --global credential.helper store
// 3.最后在仓库文件下面执行 git pull,输入账户和密码。然后在家目录下出现.git-credentials文件表示成// 功以后就可以免密push和clone了
番外篇---强大的编辑器
Geany是一个伟大的文本编辑器,它集成了GTK+工具包,以提供一个优秀的开发环境。如果你正在寻找一个类似IDE的文本编辑器,Geany可能是一个不错的选择。这个轻量级IDE支持所有主要的编程语言,并且只有一些来自其他包的依赖项。Geany的显著特征是可插入接口、语法高亮显示、行号等,它有一个简洁的接口和大量可定制的选项,是用C和c++写的。
JED是一个流行的Linux文本编辑器,它使用S-Lang库。这个跨平台的工具也适用于各种其他平台,包括Unix、VMS、OS/2、BeOS、Windows、OpenVMS等。如果你运行DOS,可以运行JED的旧版本。使用JED Linux编辑器的主要优点是轻量级,可以轻松地在有限资源的硬件上使用它。
JED编辑器的流行特性是颜色语法高亮、代码折叠、编辑器的仿真,如Emacs、不同的编程模式、编辑TeX文件、矩形剪切/粘贴等等。
下载链接:http://www.jedsoft.org/jed/download.html
Brackets是一个流行的文本编辑器,由Adobe在2014年推出。这个免费的文本编辑器附带实时预览、内联编辑、聚焦可视化工具的预处理器支持和其他令人兴奋的特性。它是为web设计人员和前端开发人员开发的。尽管是轻量级的,但是这个开源的文本编辑器包含了现代文本编辑器的所有特性,是用HTML、CSS和JavaScript编写的。
下载链接:http://brackets.io/
KWrite是KDE开发的轻量级文本编辑器,其首次公开发行是在2000年。它基于KATE文本编辑器和KDE KParts技术。这个流行的文本编辑器的主要功能包括word完成、自动缩进、语法、根据文件类型、Vi输入模式和支持插件。KWrite的其他令人兴奋的特性是可扩展性、编码支持、远程文件编辑等,它是用c++编写的。
下载链接:https://www.kde.org/applications/utilities/kwrite/
nano是一个用户友好的文本编辑器,广泛应用于unix操作系统。nano在2000年6月首次发布,它模仿了Pico文本编辑器,并附带了额外的功能,运行在一个熟悉的命令行界面中。如果你习惯在终端上摆弄配置文件,nano则可以满足你的需求。它的主要亮点包括autoconf支持、区分大小写搜索功能、自动缩进、交互式搜索和替换、tab补全、软文本包装等,用C语言编写。
下载链接:https://www.nano-editor.org/
Emacs由GNU项目创始人Richard Stallman创建,被全世界的开发者和Linux爱好者所使用。这个免费软件是用Lisp和C语言编写的,使用图灵完整的编程语言进行扩展。GNU Emacs也有广泛的文档和教程支持,还有一些扩展,比如调试器界面、邮件和新闻。
下载链接:https://www.gnu.org/software/emacs/
Gedit是作为GNOME桌面环境的默认文本编辑器加载的。这个通用文本编辑器的目的是简单易用,Gedit提供了一个干净和直接的GUI。Gedit以C语言编写,于2000年首次公开发行。这个开源和免费软件充分支持国际化文本。在Gedit中,你可以为各种编程语言(如c++、C、HTML、Java、XML、Python、Perl等)提供可配置的语法高亮显示。
下载地址:https://wiki.gnome.org/Apps/Gedit
Vim或Vi IMproved,是一个高级文本编辑器,旨在提供更强大的性能,并扩展de-factor Unix editor Vi的功能。它是一个高度可配置的文本编辑器,是为了满足开发人员的需要而构建的,也被大家戏称为"程序员的编辑器",它的设计既可以作为命令行接口,也可以作为GUI中的独立应用程序。虽然初学者抱怨说它很难使用,但他们也知道它是最强大的文本编辑器之一。它的主要亮点是自动命令、digraph输入、拆分屏幕、会话屏幕、标签扩展、语法着色和标记系统。Vim是用C和Vim script编写的。
下载链接:http://www.vim.org/download.php
Atom是由GitHub开发的免费开源文本编辑器。基于Electron (CoffeeScript, JS, Less, HTML),它是一个使用web技术构建的桌面应用程序,经常被称为21世纪的文本编辑器,核心是可编程的。Atom的主要特性是跨平台编辑、内置包管理器、文件系统浏览器、多个窗格支持、查找和替换功能,以及智能自动完成。
下载链接:https://atom.io/
在文本编辑器的民意调查中,Sublime Text成为了最受欢迎的代码编辑器,紧随其后的是,Atom和Vim。这个功能丰富的文本编辑器是为"code、 markup 和prose"而构建的。它自然地支持大量的编程语言和标记语言。 "Goto Anything"是一种很受欢迎的特性,它可以让你快速浏览到文件、线条或符号。Sublime Text的其它主要特点包括命令面板、基于python的插件API、同时编辑、项目特定的首选项等等。
下载链接:http://www.sublimetext.com/