1.常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.
gedit:
ULtraEdit是一个商业编辑器,是付费的,用户数量较多,类似于一个标准的ide工具
Geany:
Geany是一个类似于KomodeEdit的编辑器,适用于C,C++等多种语言
BlueFish:
功能相对较少,只适合一般的网页编辑
Sublime Text
可以称得上是ide的编辑器,类似于vim,但是比vim好看,功能更全面,非常适合js python php的开发
2.除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台).
c/c++ : icc是美国 Intel 公司开发的 C/C++编译器,适用于Linux、Microsoft Windows 和 Mac OS X 操作系统。
java:sun公司的java 9,其最大的特性是模块化,JShell 交互式的java,改进了Stream API,多版本兼容JAR
3. 为什么调试的时候需要编译选项中添加 -g.
用gdb进行调试纠错前必须要在编译选项中添加“-g”,“-g”标志是对程序进行调试性编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器。
了解readelf命令.
readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。
gedit:
是各个发行版本都有的编辑器,类似于windiws的记事本,不过可以根据代码类型着色
vim是一个非常强大的编辑器,但是上手难度非常高,有很多个快捷键,对于初学者来说很困难
KomodeEdit是一个非常强大的编辑器,和Notepad++一般。
ULtraEdit是一个商业编辑器,是付费的,用户数量较多,类似于一个标准的ide工具
Geany:
Geany是一个类似于KomodeEdit的编辑器,适用于C,C++等多种语言
BlueFish:
功能相对较少,只适合一般的网页编辑
Sublime Text
可以称得上是ide的编辑器,类似于vim,但是比vim好看,功能更全面,非常适合js python php的开发
2.除了gcc, 还有哪些常用的牛逼的编译器(不限制编程语言, 不限制平台).
c/c++ : icc是美国 Intel 公司开发的 C/C++编译器,适用于Linux、Microsoft Windows 和 Mac OS X 操作系统。
java:sun公司的java 9,其最大的特性是模块化,JShell 交互式的java,改进了Stream API,多版本兼容JAR
3. 为什么调试的时候需要编译选项中添加 -g.
用gdb进行调试纠错前必须要在编译选项中添加“-g”,“-g”标志是对程序进行调试性编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器。
了解readelf命令.
readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。
常见的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段信息。当前只支持IA64 ELF的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选项载入。
4. 在Linux下实现进度条程序. 建议自主完成一个彩色的进度条.
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main()
{
int n = 0;
char bar[102];
const char* label = "|\\-/";
memset(bar, 0, sizeof(bar));
while (n <= 100)
{
printf("\033[32m[%-100s]\033[0m[%d%%][%c]\r", bar, n, label[n % 4]);
fflush(stdout);
bar[n++] = '#';
usleep(10000);
}
printf("\n");
return 0;
}
5. rpm安装和yum安装的区别.
安装包都是以rpm结尾的。
yum是从网络安装源(例如网易镜像,可以自己配置)上下载rpm,如果存在依赖关系会把依赖的rpm同时下载安装。
rpm是安装本地存在的rpm包,如果存在依赖也需要安装上,如果某个rpm是自己修改编译的,那么只能用rpm安装了