0%

Linux下开发工具

编辑器-Vim

都知道vim是Linux下的编辑器之神,当然还有emacs也是特别NB的,个人在Linux下比较常用的也就是Vim了,接下来说说vim的一些配置技巧:

配置常见的代码模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
func Setfilehead()
call append(0, '/***********************************************')
call append(1, '# Filename: '.expand("%"))
call append(2, '# Author: Tim 15291418231@163.com')
call append(3, '# Description: ---')
call append(4, '# Create: '.strftime("%Y-%m-%d %H:%M:%S"))
call append(5, '# Last Modified: '.strftime("%Y-%m-%d %H:%M:%S"))
call append(6, '***********************************************/')
call append(7, '')
call append(8, '#include <stdio.h>')
call append(9, '#include <stdlib.h>')
call append(10, '#include <unistd.h>')
call append(11, '#include <sys/types.h>')
call append(12, '')
call append(13, 'int main(int argc, char *argv[]){')
call append(14, '')
call append(15, ' return 0;')
call append(16, '}')
endfunc

"映射F1快捷键,生成后跳转至第14行,然后进入vim的插入模式
map <F1> :call Setfilehead()<CR>:14<CR>o

这样的话只要新建源文件的时候按一下F1,代码就会自动添加到源文件中了!

已经配置好的Vim

这里推荐使用几个开源项目:
《VimForCpp》 这个目前只适用于CentOS7,其他版本后续才会支持!
《space-vim》这个也是比较好用的一个vim,插件都是一句代码全部搞定!

vim和emacs的比较

  • VIM和emacs是可以高度可定制化的编辑器,特别是emacs算是unix下的第一个“人工智能生命”,经过定制化以后几乎可以干任何事情,VIM在高度定制化以后的编辑速度(当然,前提是你要熟悉它的几种工作模式,特别是快捷键的应用),几乎是其它编辑器不可匹敌的
  • VIM和emacs属于神器级别的东西,用的好就是神器,用不习惯它就是垃圾,对于大部分人来说他们都是需要比较长的时间才能上手的东西,而UE这样的属于已经给你定制好了,但是没有过多可定制选项的编辑器,方便上手,但是扩展性能就不怎么样了

    编译器-gcc

    gcc是”GNU Compiler Collection”的缩写

    -I:指定头文件路径
    -On:n=0~3,编译器优化,n越大优化等级越高
    -Wall:提示更多的警告信息
    -D:编译器时定义宏,注意-D和宏之间没有空格
    -g:包含调试信息 这样编译才能被GDB调试
    -C 告诉预处理器不要丢弃注释。配合`-E’选项使用。
    -M:生成与.c和头文件的依赖关系以用于Makefile,包括系统库的头文件
    -MM:生成与.c和头文件的依赖关系以用于Makefile,不包括系统库的头文件
    -v可以查看gcc的版本信息,但是要是在gcc -v 后面加上一个源文件例如,gcc -v main.c,这样可以获得gcc所使用的系统头文件。

GCC编译C/CPP程序步骤

① 预处理:头文件展开、宏替换、去注释

1
gcc -E -o hello.i hello.c

② 编译:语法检查、生成汇编代码
1
gcc -S -o hello.s hello.i

③ 汇编:汇编代码———->机器码
1
gcc -c -o hello.o hello.s

④ 链接:链接为可执行文件
1
gcc -o hello hello.o

readelf命令

readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。
ELF(Executable and Linking Format)是一个定义了目标文件内部信息如何组成和组织的文件格式。内核会根据这些信息加载可执行文件,内核根据这些信息可以知道从文件哪里获取代码,从哪里获取初始化数据,在哪里应该加载共享库,等信息。
ELF文件有下面三种类型:
1.目标文件
gcc -c test.c
得到的test.o就是目标文件,目标文件通过链接可生成可执行文件。
静态库其实也算目标文件,静态库是通过ar命令将目标打包为.a文件。
如:ar crv libtest.a test.o
2.可执行文件
gcc -o test test.c
得到的test文件就是可执行的二进制文件。
3.共享库
gcc test.c -fPIC -shared -o libtest.so
得到的文件listtest.so就是共享库。
可以通过readelf来区分上面三种类型的ELF文件,每种类型文件的头部信息是不一样的!

实现一个彩色的进度条

注意点:printf()是按行缓冲的、sleep()与usleep()函数的单位、如何打印彩色字体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*************************************************************************
> File Name: main.c
> Author: Tim
> Mail: 15291418231@163.com
> Created Time: 2018年09月21日 星期五 03时23分51秒
************************************************************************/

#include<unistd.h>
#include<stdio.h>

int main(int argc, char *argv[])
{
char buf[102] = {0};
int i = 0;
//注意这里需要使用转义字符
char arr[4] = "/-|\\";
for(i= 0;i<=100;i++)
{
buf[i] = '*';
if(i<40)
printf("[\033[0;31m%-100s\033[0;39m] [%d%%][%c]\r", buf,i,arr[i%4]);//进度条颜色修饰
else if(i>=40 && i< 80)
printf("[\033[0;33m%-100s\033[0;39m] [%d%%][%c]\r",buf,i,arr[i%4]);
else
printf("[\033[0;32m%-100s\033[0;39m] [%d%%][%c]\r",buf,i,arr[i%4]);

//printf("[%-100s] [%d%%][%c]\r",buf,i,arr[i%4]);

//printf是按行缓冲的,所以需要刷新缓冲区
fflush(stdout);
//usleep的单位是微秒
usleep(50000);
}
//最后需要换行
printf("\n");
return 0;
}

yum与rpm安装的区别

源代码安装

  1. 绝大多数开源软件都是直接以原码形式发布的
  2. 源代码一般会被打成.tar.gz的归档压缩文件
  3. 源代码需要编译成为二进制形式之后才能够运行使用
  4. 源代码基本编译流程:
    • configure 检查编译环境;
    • make对源代码进行编译;
    • make insall 将生成的可执行文件安装到当前计算机中

rpm安装

1.源代码形式的特点:操作复杂、编译时间长、极易出现问题、依赖关系复杂
2.为了方便,RPM(redhat package manager)
3.RPM通过将代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。针对不同的系统设定不同的包
4.常用命令规范:linuxcast-1.2.0-30.el6.1686.rpm 包名-版本号-适用平台-32/64-rpm
5.使用rpm –i software.rpm(安装);
rpm -e software.rpm(卸载);
rpm –U software.rpm(升级形式安装);
rpm –ivh http://www.linuxcast.net/software.rpm(支持通过http\ftp协议形式安装)
-v 显示详细信息;-h显示进度条

yum安装

rpm软件包形式的管理虽然方便,但是需要手工解决软件包的依赖关系。很多时候安装一个软件安装一个软件需要安装1个或者多个其他软件,手动解决时,很复杂,yum解决这些问题。Yum是rpm的前端程序,主要目的是设计用来自动解决rpm的依赖关系,其特点:

  • 自动解决依赖关系;
  • 可以对rpm进行分组,基于组进行安装操作;
  • 引入仓库概念,支持多个仓库
  • 配置简单

yum仓库用来存放所有的现有的.rpm包,当使用yum安装一个rpm包时,需要依赖关系,会自动在仓库中查找依赖软件并安装。仓库可以是本地的,也可以是HTTP、FTP、nfs形式使用的集中地、统一的网络仓库。
仓库的配置文件/etc/yum.repos.d目录下

  • yum install 安装;
  • yum remove卸载;
  • 本文作者: Tim
  • 本文链接: https://zouchanglin.cn/3059972737.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!