一般在Linux文件系统下是EXT4 --->索引式文件系统,U盘是FAT32--->链接式文件系统。
EXT4:
分区完成后,磁盘格式化时,将磁盘空间分成三部分:inode block superblock
superblock:存储整个文件系统的信息,包括inode和block的总量,使用量,剩余量
inode: 存储文件的属性信息,包括文件的权限 用户…… block的编号
block: 存储文件的真实内容
下图所示:
库文件:某些功能代码的集合
静态库: 中间文件的集合 windows(.lib) linux(.dll)
链接阶段直接将库中的内容合并到最终的可执行文件中,生成的可执行文件最终执行时不依赖库文件。
动态库(共享库): 不可单独执行的可执行文件 windows(.a) linux(.so)
链接阶段只在可执行文件中设置使用的库,运行时,由操作系统动态加载到内存上执行
静态库的生成:
1> gcc -c main.c max.c ----> 得到main.o max.o
2>将目标文件归档
ar crv libxxxx.a main.o max.o ----> libxxxx.a(静态库)
动态库的生成:
gcc -shared -fPIC -o libxxxxx.so *.c
库的使用:gcc -o main main.c -L路径 -l库名
补充一个知识点:
Linux上的文件类型:目录 普通 链接 管道 设备
链接文件:
软链接(ln -s 源文件 链接文件):
符号链接 相当于windows的快捷方式
链接文件存储源文件的路径
软链接和源文件使用不同的inode结点
硬链接(ln 源文件 链接文件):
相当于源文件的别名
硬链接文件和源文件使用同一个inode结点