Linux--开发工具

1.除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.

1.Vim

 Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。

2. Eclipse
   Eclipse是一款很酷的开源代码编辑器,它拥有代码高亮和智能提示等强大的功能。在Eclipse中,完全胜任以下编程语言的工作——Python, R, Ruby, JavaScript, Natural, Lasso, C, C++, COBOL, Scheme, Clojure, Groovy等等,它也是Java集成开发环境,甚至提供了对Java 8的支持。在一些Web开发IDE特性的帮助下,你可以非常方便地对代码文件进行组织和访问。

3.Brackets

  Brackets也是一款为Linux开发者设计的开源代码编辑器,使用Brackets写代码,你不会被任何事情所打断。比如在写HTML代码时,即便你没有保存代码也可以及时预览你的Web页面效果。你也可以使用Theseus来检查变量,Brackets默认提供一种主题,当然你也可以在扩展中心获取更多的主题。

4.Emacs

Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。Emacs不仅可以作为文本编辑器,还可以用来收发电子邮件、通过FTP/TRAMP编辑远程档案、通过Telnet登录主机、上新闻组、登陆IRC和朋友交流、查看日历等功能

5.Light Table
  Light Table是一个免费开放源代码的编辑器,该编辑器有一个非常干净的界面,并有大量扩展。它与Windows、Mac和Linux都兼容,是高度可定制的。使用Light Table,开发者只需打开一个浏览器窗口即可实时查看更改,并且支持不同的嵌入。
6.Chocolat
  Chocolat本身是Mac OS X的最佳代码编辑器。该编辑器旨在与OS无缝集成,Chocolat为JS、Python和HTML提供拖放功能、拆分编辑、代码折叠和代码完成。
7.Sublime Text
   一个紧凑但性能较高的代码编辑器一个跨平台的代码编辑器,适用于所有WordPress项目。
Sublime Text有很多功能可以提供:
·脚本编程  ·自定义界面  ·常规文件切换  ·合成和错误检测  ·多媒体选择和编辑   ·外部插件集成   ·Themes 

   2.除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台). 

1)Best IDE for C/C++ – kDevelop

Kdevelop是一个专为C/C++及其他语言的开源扩展插件IDE。它基于KDevPlatform平台,这是一款可用于IDE基础开源库。 
2) Best IDE for C/C++ – Anjuta

Anjuta Devstudio是另外一款强大的开发工具,拥有先进的编程特性包括项目管理、应用程序向导、交互式调试器、源码编辑器、版本控制,GUI设计、分析器等等。这款工具为C/C++开发者提供强大的用户界面接口。 
3) Best IDE for C/C++ – Code Blocks

Code Blocks是一款比较流行的免费且开源的集成开发环境。该工具拥有所有功能,能够满足开发者所需,比如高效的用户界面、编译及调试功能等。

4) Best IDE for C/C++ – Visual Mingw

Visual-MigGW是一款极为简单的开源IDE。它所有的Windows API都可来进行简单快速的开发。它还支持一个随时可用的应用框架。项目托管在SourceForge.net。 
5) Best IDE for C/C++ – Ideone

Ideone是一款在线编辑器和调试工具。这款工具提供了强大的功能,帮助程序员以更加快速有效的方式编译源代码。 
6) Top IDE for C/C++ – Eclipse CDT

Eclipse CDT提供更加高效的功能,如:支持为各种工具链提供项目创建及管理、标准构建、源码导航、各种知识工具源;代码编辑器功能如高亮显示、折叠、超链接导航、源代码重构以及代码生成;可视化调试工具,包括内存、寄存器及反汇编视图。 
7) Best IDE for C/C++ – Compilr

Compiler是一款在线集成开发工具,允许你编写令人印象深刻的代码功能和简单的用户界面。该工具支持的语言如C、C++、Java、HTML。

8) Best IDE for C/C++ – Code Lite

Code lite是一款极好的免费开源的IDE,几乎可运行于所有平台(OSX、Windows、Linux)。 
9) Best IDE for C/C++ – Netbeans C++

Netbeans工具包含多种类型模板。它拥有迷人的功能,使其在Web开发者更加流行,比如:代码协助、编译配置、单元测试、源码检测、远程开发及文件导航等功能。 
10) Best IDE/Compiler for C/C++ – Dev C++

Dev C++的功能包括:类浏览器、集成调试、支持GCC、项目管理、代码编译、编辑且编译资源文件、工具管理、功能清单。

11) Best IDE for C/C++ – Ultimate++

Ultimate++这款IDE引入了模块化概念,支持GCC、MInGW及Visual C++。

12) Best Compiler for C/C++ – Digital Mars

DigitalMars是一款高性能的编译器,功能包含,快速编译/链接时、强大的优化技术、Contract设计、完整的资源库、浏览HTML文档,反汇编、库、资源编译器等。命令行及GUI版本、教程、代码示例、在线更新、标准模板库等等。 
13) Best IDE for C – C-Free

14) Best Compiler for C/C++ – MinGW

MinGW编译器提供访问Microsoft C运行时及一些特定语言运行时的功能。 
15) Best Compiler for C – Tiny C Compiler

Tiny C编译器最大亮点是,开发者可以随处编译代码功能,可以使用任意C语言动态库,编译并可直接执行C语言源码,完整的C语言预处理器及GNU汇编程序。 

3.为什么调试的时候需要编译选项中添加 -g. 调研readelf命令

那是因为在加了-g选项时,是可以通过行号、函数名等进行断点的设置进行调试,如果不加-g选项的话,则只能运行,不能进行调试。

接下来有一个问题,为什么在Linux环境下,调试的时候,要在编译选项中加 -g呢?

因为Linux环境默认是release模式,不能直接调试,所以加-g转换为debug模式方可调试

readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。

4.调研Linux下软件安装的几种方式(源码安装, rpm安装, yum安装). 重点要理解rpm安装和yum安装的区别.

一.Linux源码安装
1、解压源码包tar文件:源码包通常会使用tar工具归档然后使用gunzip或bzip2进行压缩,后缀格式会分别为.tar.gz与.tar.bz2,分别的解压方式:
tar -zxvf FileName.tar.gz
tar -jxvf FileName.tar.bz2
tar对文件进行压缩或解压tar[参数][文件]
-c 压缩文件
-x 解压文件
-t 查看压缩包内有哪些文件
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示压缩或解压过程信息
-f 目标文件名
-P 保留原始权限和属性
-p 使用绝对路径压缩
-C 指定解压到的目录
2、切换到解压后的目录
cd FileDirectory
3、准备编译工作:在开始安装服务之前,需要执行configure脚本,会自动的对当前系统进行一系列的评估,如源文件、软件依赖库、编译器、汇编器、连接器检查等等,如果有需要,还可以使用-prefix参数来指定程序的安装路径,而当脚本检查系统环境符合要求后,则会在当前目录下生成一个Makefile文件。
./configure -prefix=/usr/local/program
4、生成安装程序:上步生成的Makefile文件会保存有系统环境依赖关系的安装规则,接下来需要使用make命令来根据Makefile文件提供的规则使用合适的SHELL来编译所有依赖的源码,然后make命令会生成一个最终可执行的安装程序。
make
5、安装服务程序:如果在configure脚本阶段中没有使用-prefix参数,那么程序一般会被默认安装到/usr/local/bin目录中。
make install
6、清理临时文件(可选):
make clean
7、卸载服务程序命令(需要才执行)
make uninstall
8、查看安装信息
whereis 命令定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。
例如:whereis java
whereis [-bmsu] [BMS 目录名 -f ] 文件名
-b 搜索文件的二进制部分。
-m 搜索文件的手册部分。
-s 搜索文件的源部分。
-u 没有说明文档的文件
-B、-M 和 -S 标志可以用于更改或限制 whereis 命令搜索的位置。由于该程序为了运行得更快而使用了chdir子例程,所以用-M、-S 和 -B标志目录列表给出的路径名必须是完整的;例如,它们必须以一个/(斜杠)开始。
-B 与 -b 一样,但是添加了要搜索的目录。更改或限制 whereis 命令搜索二进制文件的位置。
-M 与 -m 一样,但是添加了要搜索的目录。更改或限定 whereis 命令搜索手册部分的位置。
-S 与 -s 一样,但是添加了要搜索的目录。更改或限定 whereis 命令搜索源的位置。
-f 终止最后的 -M、-S 或 -B 目录列表并发文件名起始位置信号。
源码包安装会比RPM包安装慢,是因为RPM的软件包是根据特定系统和平台而指定的,经常一种程序会提供很多RPM包的格式,用户根据系统情况选择适合的RPM包直接安装,而源码包相当于通用型,可以是用于多个系统中,所以需要运行configure脚本来检测环境,生成对应的安装信息。
    
二:RPM包安装
rpm [选项] [参数]
-a:查询所有软件包
-e:删除指定的软件包
-f<文件>:查询拥有指定文件的套件; 
-h或--hash:显示进度信息 
-i:显示包的详细信息
-i<软件包>或--install<软件包>:安装指定的软件包 
-l:显示包的文件列表
-p:查询指定的RPM包 
-q:使用询问模式
-U<软件包>或--upgrade<软件包>:升级指定的程序包
-v:显示指令执行过程; 
-vv:详细显示指令执行过程,便于排错。
常用命令组合:
-ivh:安装显示安装进度--install--verbose--hash
-Uvh:升级软件包--Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的 RPM软件包,查找丢失的文件[View Lost];
-e:删除包
--force 强制操作 如强制删除等;
--requires 显示该包的依赖关系;
--nodeps 忽略依赖关系并继续操作
1、安装
rpm -i 需要安装的包文件
rpm -iv  需要安装的包文件(显示安装详情)
rpm -ivh 需要安装的包文件(显示安装详情及进度)
2、升级
rpm -U 需要升级的包文件
rpm -Uvh 需要升级的包文件(显示升级详情及进度)
3、卸载
rpm -e 需要卸载的软件包
注:如果其他程序依赖要卸载的包,系统会提示不能删除,若需要强行删除加上--nodeps,会强制删除,但可能导致依赖于它的软件不能运行。
4、查看已安装
rpm -qa
5、查看指定包
rpm -qa | grep "软件或者包的名字"
三、yum安装
1、安装: yum install 软件
2、升级: yum update 软件
3、删除: yum remove 软件
4、查看: yum info 软件
5、搜索软件: yum search 软件
6、查看依赖关系: yum deplist 软件
7、查看已安装软件: yum list installded
yum 命令参数列表:
-e 静默执行
   -t 忽略错误
   -R[分钟] 设置等待时间
   -y 自动应答yes
   --skip-broken 忽略依赖问题
   --nogpgcheck 忽略GPG验证
        check-update 检查可更新的包
   clean all 清除全部
   clean packages 清除临时包文件(/var/cache/yum 下文件)
   clean headers 清除rpm头文件
   clean oldheaders 清除旧的rpm头文件
   deplist 列出包的依赖
   list 可安装和可更新的RPM包
   list installed 已安装的包
   list extras 已安装且不在资源库的包
   info 可安装和可更新的RPM包 信息
   info installed 已安装包的信息(-qa 参数相似)
   install[RPM包] 安装包
   localinstall 安装本地的 RPM包
   update[RPM包] 更新包
   upgrade 升级系统
   search[关键词] 搜索包
   provides[关键词] 搜索特定包文件名
   reinstall[RPM包] 重新安装包
   repolist 显示资源库的配置
   resolvedep 指定依赖 

rpm

* 用来安装已经下载在本地机器上的rpm包,类似Windows里面的“添加/删除程序”

* 可以发现并提示某个依赖包尚未安装,但需要手动先安装依赖包

yum

* 能够自动下载并安装rpm包

* 能够处理包的依赖关系

* 能够更新系统

* 使用存储库(repository),即包的集合 

5. 在Linux下实现进度条程序. 通过makefile进行编译. 自主完成一个彩色的进度条

#include <stdio.h>
#include <unistd.h> 
#define END "\033[0m"#define BLACK "\033[30m"
#define RED "\033[31m"#define GREEN "\033[32m"
#define YELLOW "\033[33m"#define BLUE "\033[34m"
#define PORPLE "\033[35m"#define DGREEN "\033[36m"
#define WHITE "\033[37m" 
int main()
{  
	int i = 0;   
	char buf[120];   
	for(i=1; i<=100; i++)   
	{   
		buf[i] = '#';  
		//\r把光标定义在同一行的开头位置    
		int c = i%8;     
		switch(c)      
		{         
		case 0:        
			printf(BLACK);   
			break;         
		case 1:            
			printf(RED);   
			break;         
		case 2:           
			printf(GREEN); 
			break;         
		case 3:             
			printf(YELLOW);           
			break;       
		case 4:          
			printf(BLUE);  
			break;     
		case 5:         
			printf(DGREEN);   
			break;        
		case 6:            
			printf(PORPLE); 
			break;         
		case 7:         
			printf(WHITE);      
			break;     
		}     
		//不加-就从左补空格,右边打印;加-从右补空格,左边打字符  
		printf("[%-100s][%d%]\r", buf, i);   
		printf(END);       
		fflush(stdout);     
		//这里稍停0.1秒     
		usleep(100000);//单位为微秒,sleep函数单位为秒  
	}    
	printf("\n");
}

猜你喜欢

转载自blog.csdn.net/qq_41268108/article/details/82884865