开发工具

本文介绍了一系列常用的代码编辑器,如Eclipse、LightTable、Sublime Text、Brackets和Emacs,以及除GCC外的编译器,包括Visual C++、Borland C++、Gnu C++、Intel C++和Clang C++。探讨了编译选项-g的重要性,并解释了readelf命令的使用。此外,还展示了如何通过makefile实现进度条程序的编译,以及Linux下软件安装的不同方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、除vim外常用编辑器及其特点

1、Eclipse

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。虽然大多数用户很乐于将 Eclipse 当作 Java集成开发环境(IDE)来使用,但 Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),虽然Eclipse 是使用Java语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C++、COBOL、PHP、Android等编程语言的插件已经可用,Eclipse 框架还可用来作为与软件开发无关的他应用程序类型的基础,比如内容管理系统。

2、LightTable

LightTable是一个应用ClojureScript写的可扩展的集成编辑环境(IDE)。由ChrisGranger和RobertAttorri开发。具有实时运行反馈,调试和搜索文档的功能。及时反馈功能提供了一个不同寻常的运行环境来让程序员构建抽象。开发团队试图创造一个能够让程序员及时获知程序运行状态的软件。该软件一开始只支持Clojure语言,但是现在通过众多扩展,也能够支持Python和JavaScript语言。

3、Sublime Text

Sublime Text是一个具有丰富扩展功能的Vim。Sublime Text是一个代码编辑器,也是HTML和散文先进的文本编辑器。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的Python API,Goto功能,即时项目切换,多选择,多窗口等。并且支持Retina视网膜屏、快速跳到下一个、文本拖放等。

4、Brackets

Brackets 是一个免费、开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具)。支持 Windows、Linux 以及 OS X 平台。Brackets 的特点是简约、优雅、快捷!它没有很多的视图或者面板,也没太多花哨的功能,它的核心目标是减少在开发过程中那些效率低下的重复性工作,例如浏览器刷新,修改元素的样式,搜索功能等等。

5、Emacs

Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中,在基于编辑器的功能基础上,Emacs自行开发了一个“bourne-shell-like”的shell: EShell。Emacs还可以:收发电子邮件、通过FTP/TRAMP编辑远程档案、通过Telnet登录主机、上新闻组、登陆IRC和朋友交流、查看日历、撰写文章大纲、对多种编程语言的编辑、调试程序,结合GDB,EDebug等。支持C/C++,Perl,Python,Lisp等等。它的特点是、交互式编辑器、实时编辑器、高级编辑器、自文档化、可定制性、可扩展性(集成Lisp语言)、支持X Window环境。

二、除gcc外常用编译器及其特点

1、Visual C++

Visual C++是微软公司推出的开发环境。是目前最流行的 Windows 平台应用程序开发环境。目前已经开发到Visual Studio 2017。Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件,目前还可开发安卓平台应用及IOS平台应用。

2、Borland C++

BorlandC++BuilderCompiler是一个BC编译器。它是用来优化BC开发系统的工具。它包括最后版本的ANSI/ISO C++语言的支持,包括RTL,C++的STL框架结构支持。

3、Gnu C++

Gnu是类UNIX系统下编写C++首先的编译器。其特点是可移植性好,可以在广泛的平台上使用它,是跨平台嵌入式系统开发的首选。

4、Intel C++

IntelC++Compiler(简称icc或icl)是美国Intel公司开发的C/C++编译器,适用于Linux、MicrosoftWindows和MacOSX操作系统。

5、Clang C++

Clang是一个C语言、C++、Objective-C、Objective-C++语言的轻量级编译器。源代码发布于BSD协议下。

三、 为什么调试的时候需要编译选项中添加 -g? 调研readelf命令。

1、加选项-g是为了能够调试,不加可以运行,但不能调试。加上-g选项以后,gcc在编译是会做以下额外的操作:

(1)创建符号表,符号表包含了程序中使用的变量名称的列表。

(2)关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行。

2、readelf

(1)功能

用于显示elf格式文件信息

(3)elf文件分类

可重定位文件、可执行文件、共享目标文件

(2)elf文件作用

elf文件参与程序的连接(建立一个程序)和程序的执行(运行一个程序)

a)如果用于编译和链接(可重定位文件),则编译器和链接器将把elf文件看作是节头表描述的节的集合,程序头表可选。 

b)如果用于加载执行(可执行文件),则加载器则将把elf文件看作是程序头表描述的段的集合,一个段可能包含多个节,节头表可选。 

c)如果是共享文件,则两者都含有。 

(4)elf文件头描述的信息

系统相关,类型相关,加载相关,链接相关

(5)readelf指令

-a 

-all 显示全部信息,等价于 -h -l -S -s -r -d -V -A -I

-h 

-file-header 显示elf文件开始的文件头信息

-l 

-program-headers  

-segments 显示程序头(段头)信息(如果有的话)

-S 

-section-headers  

-sections 显示节头信息(如果有的话)

-g 

-section-groups 显示节组信息(如果有的话)

-t 

-section-details 显示节的详细信息(-S的)

-s 

-syms        

-symbols 显示符号表段中的项(如果有的话)

-e 

-headers 显示全部头信息,等价于: -h -l -S

-n 

-notes 显示note段(内核注释)的信息

-r 

-relocs 显示可重定位段的信息

-u 

-unwind 显示unwind段信息

-d 

-dynamic 显示动态段的信息

-V 

-version-info 显示版本段的信息

-A 

-arch-specific 显示CPU构架信息

-D 

-use-dynamic 使用动态段中的符号表显示符号,而不是使用符号段

-x <number or name> 

-hex-dump=<number or name> 以16进制方式显示指定段内内容,number指定段表中段的索引,或字符串指定文件中的段名

-w[liaprmfFsoR] or 

-debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges] 

显示调试段中指定的内容

-I 

--histogram 显示符号的时候,显示bucket list长度的柱状图

-v 

-version 显示readelf的版本信息

-H 

-help 显示readelf所支持的命令行选项

-W 

-wide 宽行输出

@file 可以将选项集中到一个文件中,然后使用这个@file选项载入。 

四、实现一个进度条程序,通过makefile进行编译。

1、makefile

test:test.c
        gcc -o $@ $^
.PHONY:clean
clean:
        rm -f test

2、test.c 

#include "stdio.h"
#include "string.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 BULE "\033[34m"             //蓝
#define PORPLE "\033[35m"           //洋红 
#define DGREEN "\033[36m"           //青
#define WHITE "\033[37m"            //白
int main()
{
    int i=0;
    char bar[102];
    memset(bar,0,sizeof(bar));
    const char *lable="|/-\\";
    while(i<=100)
    {
        printf(WHITE);              //进度条颜色
        printf("[%-100s][%d%%][%c]\r",bar,i,lable[i%4]);
        fflush(stdout);             //刷新输出
        bar[i++]='#';
        usleep(10000);              
    }
    printf("\n");
    printf(END);                    //结束,恢复正常
    return 0;
}

3、运行结果 

五、Linux下软件安装的几种方式(源码安装, rpm安装, yum安装),理解rpm安装和yum安装的区别。

1、源码安装

(1)获取源码

将软件的源码下载至/usr/local/,并解压。

(2)查看INSTALL与README文件

解压后查看INSTALL与README文件,这两个文件中详细介绍了本软件的安装方法和注意事项。

(3)创建Makefile文件

执行configure命令,生成Makefile文件。

(4)编译

执行make clean;make命令将源码编译成二进制文件。 

注:make clean命令用来清除上一次编译生成的目标文件。这个步骤可有可无,但为了确保编译的成功,还是加上为好。防止由

软件中含有残留的目标文件导致编译失败。

(5)安装

执行make install命令将上一步编译好的二进制文件安装到指定的目录中去。

2、rpm安装

(1)找到相应的软件包,下载到本机目录; 

(2)打开所在目录;

(3)输入rpm -ivh RPM包的全路径文件名。

3、yum安装

(1)查找本地软件yum list 软件名

(2)没有就在软件仓库找yum search 软件名

(3)安装yum install 软件名

4、rpm与yum区别

(1)rpm:将二进制程序打包

(2)yum:基于rpm包进行管理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值