关于文件那些事儿

一、库文件:

 1.定义: 库文件指事先将写好的预编译指令封装成库,在使用某些功能时就不需要重新写入,调用库文件就行。为用户提供调       用接口。

 2.分类:库文件可分为静态库和动态库。在window下,静态库的扩展名为.lib文件,动态库(共享库)为.DDL文件;Linux下静态库文件扩展名为.a,动态库文件的扩展名为.so文件。

3.静态库

  •   特点:程序在链接时,链接器在库文件获取需要的代码,复制到生成的文件中。所以在程序链接阶段被复制到程序中,和程序的执行过程没有关系。
  •   创建步骤:

         eg: 有两个源文件为main.c和test.c文件

          gcc -c main.c test.c   ——>main.o test.o         使用ar将目标文件归档:ar crv libname.c main.o test.o

           libname.a为创建的静态库。

  • linux下 使用命令:gcc -o main main.c  -L库的存储路径   -l库文件名称

4.动态库

  •     特点:动态库在连接阶段并未加载到程序中,而是程序在运行时被系统动态加载到内存中使用。
  •     创建步骤:

     eg:有源文件main.c

      gcc -fPIC -shared -o libname.so main.c //这行代码可以分两步执行: gcc  -c -fPIC main.c      gcc-shared -o libname.so               main.c    

     libname.so为创建的动态库

  •   linux下使用命令:gcc -o main main.c  -L库的存储路径   -l库文件名称
  • 在linux下可通过LD_LIBRARY_PATH环境变量给操作系统指定库加载路径

        1.可直接在终端上改 export LD_LIBRARY_PAT=库的路径;

        2.修改配置文件  /etc  LD_LIBRARY_PAT=库的路径;

        3.将生成文件的共享库存储到系统默认的搜索路径下 /lib /usr/lib

5.linux下库的生成:

  

6.动态库与静态库的区别

  •  静态库链接过程中拷贝了一份库文件代码,而动态库是在系统运行时将库文件代码加载到内存中。如果多次使用静态库文件,       就会拷贝多次,占用内存,浪费空间;    动态库只需加载一次,不同程序可以得到内存中相同动态库文件的副本,节省内存。
  •  程序运行时不需要依赖静态库,但动态库恰恰相反
  •  静态库类似于中间文件的集合,是不可执行的;共享库是一个不可执行文件;
  •  在更新库的功能时,如若是静态库,必须重新编译可执行文件;动态库只需更新共享库就行。

二、Makefile文件

  1.makefile主要包括显示规则、隐晦规则、变量定义、文件指示和指示五个方面的内容。

  2. 定义:系统规则,哪些文件需要先编译、后编译或重新编译。

  3.优点:提高了软件编译效率;提高开发人员的工作效率;make一次写好,永久使用。

   4. 功能:这个事关工程的编译规则,执行操作系统的命令。实现自动化编译,提高编译效率(只会编译修改的和依赖于修改的                     文件)

  5.工作原理:make是解释Make file 的指令工具;当我们输入make时:

  •          make首先会在当前目录下找Makefile文件; 
  •          如果找到,他会选择文件中的一个目标文件main,并把main文件作为最终目标文件;
  •          如果main文件不存在或main后面依赖的.o文件的修改时间要比main文件新,那他会执行后面所定义的命令生成main文            件;         
  •          如果main 依赖的.o文件存在,make会在当前文件中找目标为.o文件的依赖性,如果找到在根据规则生成.o文件;
  •          因为.c文件和.h文件存在,make会生成.o文件,然后再用。o文件声明make的最终文件,即执行文件main;

 6.编写步骤

        有5个文件:main.c my1.h my2.h my1.c my2.c

        1)    main: main.o my1.o my2.o        gcc -o main main.o my1.o my2.i

               main.o: main.c  my1.h my2.       

                  gcc -o main.c

              my1.o: my1.c  my1.h

                     gcc -o my1.c

             my2.o:my2.c my2.h

                    gcc -o my2.c

              clean: 

                   rm -f *.o main

     2)执行命令:make生成可执行文件main。

  Tab键 gcc -o ELF_main  生成执行文件main(在定义好依赖关系后,后续一行定义如何生成目标文件的操作系统命令,一定要以Tab键作为开头)

    目标文件包括main、 .o(中间目标文件)、 依赖文件(冒号后的文件)。每一个.o文件有一组依赖文件,而.o文件又是main的依赖文件。从依赖关系可看出目标文件是由哪些文件生成的。

   make clean会删除所以目标文件,重新编译。clean放在文件的最后而且clean只是一个动作。要make执行后面的命令,make  后必须的指出clean的名字

 make会一层一层地找文件的依赖关系,直到找到第一个目标文件。如果在寻找过程中没有找到目标文件,make会直接退出并且报错。make只管文件的依赖性,而对于命令定义错误或编译失败,他是不会搭理的。

   6. make与Makefile的区别

       make是一个命令,Makefile是一个文件;当Makefile文件写好后,只需make将Makefile运行起来。                                             三、linux下文件操作函数与系统调用函数

       文件操作函数:open  read write close lseek stat

         int open(char *path,int flag)//打开一个普通文件 ,打开成功返回文件描述符

         int read(int fd ,void *buff,size_t size)   //按字节读取文件内容

         int write(int fd ,void *buff,size_t size) //按字节将内容写入文件中

         int  close(int fd)//关闭打开的文件

         int lseek(int fd,int size,int flag)  //移动读文件偏移量         

         三个stat函数获取文件属性信息

         int stat(char *path,struct stat *st);

         int fstat(int fd,struct stat *st);

         int lstat(char *path,struct stat *st);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值