1、简述如下目录的功能
/root:管理员的家目录(sudo su)进入管理员模式
/etc:配置文件
/home:所有普通用户的家目录
/boot:存放系统内核及与系统启动相关的文件
/lib:系统的库文件
/bin:命令(二进制可执行程序)
2、写出15个熟悉的命令,并说明其功能
文件操作:cp/rm/mv/cat/more/head/tail/vi/vim/touch/rmdir/mkdir/grep/find/awk/sed/sort
进程:kill/ps/jobs/&/top/strace/lstrace(跟踪系统调用)
网络:ifconfig/ping/tcpdump/netstat -natp/lsof -p +id号/nc
编程:gcc/g++/gdb/make
3、linux系统有哪些类型的文件,每种文件分别用什么标识符?
普通文件:-目录文件:d连接文件:l管道文件:p设备文件:c/b套接字文件:s
4、文件的权限都有哪些,分别用什么数字表示?
可读:100(4)可写:010(2)可执行:001(1)-占位:0
chmod xxx 文件名 (chmod (u/g/o)+-(r/w/x))文件名 (文件设定法,数字设定法)
5、将main.c生成对应的可执行文件,中间一个经过几个步骤?
四个步骤:预编译:gcc -E main.c -o main.i->.i文件(引头文件,去注释,展开宏)
编译:gcc -S main.i -o main.s->.s文件(检查语法)
汇编:gcc -c main.s -o main.o->文件(生成机器代码)
链接:gcc -o main main.o(生成可执行文件)
一步编译:gcc -o main main.c
6、多文件编译流程
gcc -o main main.c 文件1.c 文件2.c·······
7、makefile文件
make makefile文件
all: main//可执行文件
main:main.o add.o max.o//依赖文件
gcc -o main main.o add.o max.o
main.o:main.c
gcc -c main.c
add.o:add.c
gcc -c add.c
max.o:max.c
gcc -c max.c
clean:
rm -r *.o main//删除多余文件
make执行生成main可执行文件
8、调试用什么工具,常用的命令有什么?
GDB.生成可执行程序时,-g 例: gcc -o main main.c -g
l显示代码,b+行号(下断点) info break/b(查看断点) delete +断点号(删除断点) r启动程序
n 单步执行 p 打印变量 c 执行下一个断点/退出程序 q退出程序 s进入函数 f跳出函数
set follow-fork-mode child跟踪子进程 info threads显示调试的线程 thread id 切换线程
9、什么是库?简述静态库与动态库的区别,如何生成动态库
库文件:预先编译好的方法的集合。
静态库:会将用到的方法直接链接到可执行程序中
动态库(共享库):没有包含,在需要用到的时候去动态链接
ldd 程序名 查看使用到的库文件(动态库)
//静态库
gcc -c add.c
gcc -c max.c
ar crv libfoo.a add.o max.o
//使用时
gcc -o main main.c -lfoo(库名) -L.(指定路径)
//动态库
gcc -shared -fPIC -o libfoo.so add.o max.o//生成共享库(动态)
sudo su cp /libfoo.so /usr/lib//移动到合适的位置
//使用时
gcc -o main main.c -L. -lfoo