Linux腾讯面经

Linux基础

1.硬链接和软链接的区别?

●硬链接共享inode,软链接有独立的inode;
●硬链接不能跨文件系统,软链接可以跨系统;
●删除源文件,硬链接有效,软链接无效;
●不能创建目录的硬链接(避免形成循环链接),可以创建软链接;
●硬链接是完全相同的文件,多个名字指向一份数据,软链接相当于文件路径的引用;
●硬链接占用空间少,只是给现有文件新增一个目录项,软链接包含文件路径引用,所以需要自己的inode,数据块,并且存储目标路径的字符信息

2.静态库和动态库的区别?

●静态库在linux是.a,在windows是.lib,动态库在linux是.so,在windows是.dll
●静态库在编译的时候与程序静态链接,动态库在运行的时候动态动态链接加载
●静态库较大,包含库的代码,动态库较小,代码不包含在可执行文件
●静态库更新要重新编译,动态库不需要
●静态库不依赖外部库,动态库需要
●每个程序豆包含静态库副本,多个程序可以共享同一个动态库副本

3.分别用数字和字母的形式将./a.txt文件的权限设置为所有者和所在组可读可写,其他人可读

// 命令放在这里
chmod 664 ./a.txt

4.对一个main.c进行gdb调试的步骤是什么?给出具体指令

//1,编译
gcc -g -o main main.c
//2,启动gdb
gdc ./main
//3,设置断点
break main
//4,运行程序
run
//5,查看状态
print x
//6,单步执行
next
//7,修改变量
set variable x = 10
//8,继续执行
continue
//9,退出
quit

5.给出makefile的一个基本规则,两个常用函数,三个自动变量

//1,规则
targets:prerequisites
(tab)command
//例
hello:hello.c
//2,常用函数
//2.1wildcard函数
按给定参数匹配文件名,在Makefile规则中,通配符会自动展开,但在变量的定义中,通配符将失效,最终情况可以使用wildcard展开通配符
例如src = $(wildcard *.c):匹配当前目录下所有.c文件,将文件名组成列表赋值给src
obj = $(wildcard *.o)
//2.2patsubst函数
匹配替换
obj =

你可能感兴趣的:(linux之旅,linux,运维,服务器)