1.Eclipse
Eclipse是一款很酷的开源代码编辑器,它拥有代码高亮和智能提示等强大的功能。在Eclipse中,完全胜任以下编程语言的工作——Python, R, Ruby, JavaScript, Natural, Lasso, C, C++, COBOL, Scheme, Clojure, Groovy等等,它也是Java集成开发环境,甚至提供了对Java 8的支持。在一些Web开发IDE特性的帮助下,你可以非常方便地对代码文件进行组织和访问。
2.Brackets
Brackets也是一款为Linux开发者设计的开源代码编辑器,使用Brackets写代码,你不会被任何事情所打断。比如在写HTML代码时,即便你没有保存代码也可以及时预览你的Web页面效果。你也可以使用Theseus来检查变量,Brackets默认提供一种主题,当然你也可以在扩展中心获取更多的主题。
3.Emacs
Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。Emacs不仅可以作为文本编辑器,还可以用来收发电子邮件、通过FTP/TRAMP编辑远程档案、通过Telnet登录主机、上新闻组、登陆IRC和朋友交流、查看日历等功能
4.Light Table
Light Table是一个免费开放源代码的编辑器,该编辑器有一个非常干净的界面,并有大量扩展。它与Windows、Mac和Linux都兼容,是高度可定制的。使用Light Table,开发者只需打开一个浏览器窗口即可实时查看更改,并且支持不同的嵌入。
5.Chocolat
Chocolat本身是Mac OS X的最佳代码编辑器。该编辑器旨在与OS无缝集成,Chocolat为JS、Python和HTML提供拖放功能、拆分编辑、代码折叠和代码完成。
6.Sublime Text
一个紧凑但性能较高的代码编辑器一个跨平台的代码编辑器,适用于所有WordPress项目。
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汇编程序。
还有一个小小的注意点,为什么调试的时候需要编译选项中添加 -g?
那是因为在加了-g选项时,是可以通过行号、函数名等进行断点的设置进行调试,如果不加-g选项的话,则只能运行,不能进行调试。
接下来有一个问题,为什么在Linux环境下,调试的时候,要在编译选项中加 -g呢?
因为Linux环境默认是release模式,不能直接调试,所以加-g转换为debug模式方可调试
readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。
一.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和yum的区别:
首先rpm不用考虑依赖关系因为他会将软件包涉及到的所有依赖包都找到并安装。如果电脑连入网络它会更方便的从网络寻找依赖关系。而且不用考虑软件路径,因为yum软件会通过下载源文件来找对应的软件。
yum安装支持变量 比如yum install *Chinese* 就是搜索出yum源中所有与Chinese有关的rpm包并询问是否安装。
在Linux下实现进度条程序. 通过makefile进行编译.完成一个彩色进度条
#include
#include
#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");
}