spring boot项目只有src目录,没有webapp目录,会将静态访问(html/图片等)映射到其自动配置的静态目录,如下 /static /public /resources /META-INF.../resources 所以,一般我们会配置spring.resourcess.static-locations的值: web.upload-path=E:/ spring.mvc.static-path-pattern...,所以不能再用@RestController,而用普通的@Controller/ request.setAttribute("key", "hello world"):这是最基本的语法,向页面转参数 key...return "/index": 跳转到 templates/index.html动态页面,templates目录为spring boot默认配置的动态页面路径。 ?...其中:templates目录为spring boot默认配置的动态页面路径。
文章目录 动静态库的基本原理 认识动静态库 动静态库各自的特征 静态库的打包与使用 打包 使用 动态库的打包与使用 打包 使用 动静态库的基本原理 动静态库的本质是可执行程序的“半成品...说明一下: -fPIC作用于编译阶段,告诉编译器产生与位置无关的代码,此时产生的代码中没有绝对地址,全部都使用相对地址,从而代码可以被加载器加载到内存的任意位置都可以正确的执行。...这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。...,取决于这个.so文件代码段和数据段内存映射的位置。...不加-fPIC编译出来的.so是要在加载时根据加载到的位置再次重定位的,因为它里面的代码BBS位置无关代码。
大家好,又见面了,我是你们的朋友全栈君。 常见的存储区域可分为: 1、栈 由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。...2、堆 由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。...4、全局/静态存储区 全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。...BSS段属于静态存储区。 例2:static全局变量与普通全局变量有什么区别?...答:static局部变量的存储区为静态存储区,普通局部变量的存储区为栈; static局部变量生存周期为整个源程序,但是只能在声明其的函数中调用,并且其值与上一次的结果有关;而普通局部变量的生存周期为声明其函数的周期
(别人是无法看到静态库中的内容的,这样可以达到保密的效果) 有静态库相应地就有动态库,那什么又是动态库呢,它是我们在编译的时候不链接的目标代码而是在加载的时候才链接,后缀名为.o. ...静态库的使用: 在项目的开发中经常会用到静态库.如果我们不希望别人看到我们代码的内部实现,我们就可以给别人一个静态库. ...2.实现静态库中的功能 静态库创建好之后我们就可以实现静态库的功能了,(在.h和.m文件中),实现的过程和我们平时写代码是一样的(.h声明, .m实现). .h中的代码: ...针对真机和模拟器的静态库文件只能在一个平台下面使用,我们需要将两个静态库合并成一个在真机上和模拟器上都可以使用的静态库文件. 4.合并静态库 合并的方式不止一种,我们选择利用终端的方式... 首先在终端上输入lipo -create,然后将两个静态库文件拖到终端中,再在最后输入-ouput 紧跟一个路径,这是合并后的静态库存放的位置. ?
共同点: 静态库和动态库都是闭源库,只能拿来满足某个功能的使用,不会暴露内部具体的代码信息,而从github上下载的第三方库大多是开源库 这两种库都有哪些文件格式?...将静态库打包的时候,只能打包代码资源,但是图片文件、本地json文件和xib等资源文件无法打包进去 使用.a静态库的时候需要三个组成部分:.a文件+需要暴露的头文件+资源文件; .framework...静态库和动态库的制作方式 静态库和动态库的制作方式 制作静态库时的几点注意: 注意理解:无论是.a静态库还.framework静态库,我们需要的都是二进制文件+.h+其它资源文件的形式,不同的是,.a本身就是二进制文件...category是我们实际开发项目中经常用到的,把category打成静态库是没有问题的,但是在用这个静态库的工程中,调用category中的方法时会有找不到该方法的运行时错误(selector not...如果一个静态库很复杂,需要暴露的.h比较多的话,就可以在静态库的内部创建一个.h文件(一般这个.h文件的名字和静态库的名字相同),然后把所有需要暴露出来的.h文件都集中放在这个.h文件中,而那些原本需要暴露的
通过修改主工程的依赖库,以及子工程的依赖关系以及打包类型,测试动态库依赖静态库、静态库依赖动态库、静态库依赖静态库的情况。...静态库的生成只有编译,没有链接; 那么在静态库D生成的过程中,只是确定了静态库D需要用到动态库中的foo函数; 当运行时,加载了动态库A、C,其中两个库均含有foo函数;动态链接器,按照加载的顺序,...验证:我们调换Link Binary With Libraries 中A和C的位置,结果如下 2016-12-20 10:35:11.048034 testLib[7705:4799491] Test...总结 静态库的生成只有编译,没有链接; 动态库的生成除了编译还有链接的过程; 如果动态库依赖静态库,在生成动态库时会将静态库的代码合并到动态库中; 静态库A依赖静态库B,使用时需要在Link Binary...如何直接使用.a静态库,不要静态库的头文件?
什么是库 库是共享程序代码的方式,一般分为静态库(static libraries)、动态库(dynamically loaded libraries)和共享库(shared libraries)。...静态库 静态函数库实际上就是简单的一个普通的目标文件的集合,一般来说习惯用“.a”作为文件的后缀。 静态函数库,是在程序执行前就加入到目标程序中去了 。...静态库的后缀是.a,它的产生分两步(linux下) 由源文件编译生成一堆.o,每个.o里都包含这个编译单元的符号表 ar命令将很多.o转换成.a,成文静态库 Android中需要设定Android.mk...优缺点 静态库的优点 (1) 代码装载速度快,执行速度略比动态链接库快; (2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题...使用 静态链接 静态库使用静态链接的方法。 动态库也可以使用静态链接。 动态库使用静态链接的时候,载入代码就会把程序会用到的动态代码或动态代码的地址确定下来。
问题 静态库和动态库有什么区别? 回答 后缀名不同 动态库的后缀,在 Windows 上是 .dll,linux 上是 .so,在 OSX 上是 .dylib。...可执行文件大小不一样 静态链接的可执行文件要比动态链接的可执行文件要大得多,因为它将需要用到的代码从二进制文件中“拷贝”了一份,而动态库仅仅是复制了一些重定位和符号表信息。...扩展性与兼容性不一样 如果静态库中某个函数的实现变了,那么可执行文件必须重新编译,而对于动态链接生成的可执行文件,只需要更新动态库本身即可,不需要重新编译可执行文件。...正因如此,使用动态库的程序方便升级和部署。 依赖不一样 静态链接的可执行文件不需要依赖其他的内容即可运行,而动态链接的可执行文件必须依赖动态库的存在。...加载速度不一样 由于静态库在链接时就和可执行文件在一块了,而动态库在加载或者运行时才链接,因此,对于同样的程序,静态链接的要比动态链接加载更快。所以选择静态库还是动态库是空间和时间的考量。
库是一种可执行的二进制文件,是编译好的代码。使用库可以提高开发效率。在 Linux 下有静态库和动态库。 静态库在程序编译的时候会被链接到目标代码里面。所以程序在运行的时候不再需要静态库了。...静态库的制作步骤: 编写或准备库的源代码 将源码.c 文件编译生成.o 文件 使用 ar 命令创建静态库 测试库文件 动态库制作步骤: 编写或准备库的源代码 将源码.c 文件编译生成.o 文件 使用 gcc...命令创建动态库 测试库文件 静态库 新建 mylib.c 文件: #include void mylib(void); void mylib(void) { printf("...-L:指定动态库的查找位置。.../etc/ld.so.conf,我们在这个配置文件里面加入动态库所在的位置,然后使用命令 ldconfig 更新目录。
什么是库? 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 所谓静态、动态是指链接。...回顾一下,将一个程序编译成可执行程序的步骤: ? 静态库: 之所以成为【静态库】,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。...试想一下,静态库与汇编生成的目标文件一起链接为可执行文件,那么静态库必定跟.o文件格式相似。...其实一个静态库可以简单看成是一组目标文件(.o/.obj文件)的集合,即很多目标文件经过压缩打包后形成的一个文件。静态库特点总结: 1、静态库对函数库的链接是放在编译时期完成的。...通过上面的介绍发现静态库,容易使用和理解,也达到了代码复用的目的,那为什么还需要动态库呢? 为什么还需要动态库? 为什么需要动态库,其实也是静态库的特点导致。 1、空间浪费是静态库的一个问题。 ?
静态链接 1.建立静态链接库 File→New→Project→Static library 示例: 建立静态链接库工程:StaticLibrary, static.h #ifndef STATIC_H_INCLUDED...libStaticLibrary.a是用于链接的,与其他文件一起编译生成一个exe执行文件。...2.建立主工程 建立Console application 将生成一个main.c示例文件,在最上方添加#include "static.h"语句,这样就可以调用静态链接库里的函数了。...在Linker settings选项卡下添加libStaticLibrary.a的路径,即添加需要的库。...在Search directories选项卡下的Compiler子选项卡下添加static.h所在的目录路径,即写入项目的头文件目录。 最后,点击编译即可。
库文件-百度百科 库、动态库和静态库(.dll,.so,.lib,.a)知乎 浅谈静态库和动态库_知乎
1、第一种方式访问:以jar的形式引入静态资源 可以去https://www.webjars.org/获取各种静态资源的maven格式的代码 比如将jquery加入到项目中: ...3.4.1 在浏览器输入:localhost:8080/webjars/jquery/3.4.1/jquery.js可访问到静态资源...类路径下的这四个文件夹中的静态资源。...3、欢迎页面 静态资源文件夹下的所有index.html页面 4、所有的**/favicon.ico都是在静态资源的文件下找 5、我们也可以在配置文件中定义静态资源文件存放的位置 使用:spring.resources.static-locations...系统默认的静态资源路径就不可以使用了。
本文目标: ⭐认识动态静态库,学会结合gcc选项,制作动静态库⭐ ⭐了解动态库加载过程⭐ 库的一些概念: 静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。...形成一个可执行程序,可能不仅仅只依赖一个库!而gcc的库默认是动态链接,但是当提供的是静态库时,并不能说gcc不会使用静态库,事实证明,不管是动态还是静态,都可以使用。...-fPIC的作用是在生成.o文件的时候,产生位置无关码,然后再多加了一个选项:-shared。-shared的意思是表示生成共享库格式。 ...此时的静态库的代码数据已经称为了这个程序的代码数据的一部分了,因此静态库不需要考虑加载问题。...动态库加载与访问加载过程: 与位置无关码:就是用特定的参照系来进行定位某一个人或物对应所处的位置,这种相对静止的方式就叫做与位置无关。
iOS下的存在形式 静态库:.a和.framework 动态库:.dylib和.framework(系统提供给我们的framework都是动态库!)...lipo create or operate on universal files,此命令主要是帮你查看或者创建支持多平台的静态库的。比如将两台不同平台的静态进行合并。...调用的时候肯定会出现如下unrecognized selector sent to class错误提示,这时要设置other linker flag,生成静态库和调用静态库的工程都加上-all_load...---- 2019年11月14日更新 framework跟.a的区别 .a是多个目标文件.o的集合,它在生成的时候只需要所依赖静态库的头文件,不需要具体的实现,所以最终用的时候需要链接依赖的静态库,这可能会出现...openssl由于版本不一致导致的冲突问题 framework是二进制代码,它所依赖的静态库会在生成framework的时候被链接进去,所以最终用的时候只需要framework,不再需要.a了,这可以用于解决
在 Linux 编程中,库是组织和共享代码的一个重要机制,主要分为静态库(Static Library)和动态库(Dynamic Library)。下面详细介绍它们的类型、使用方式、优缺点以及总结。...静态库(Static Library) 1. 什么是静态库 静态库是在编译时将所有需要的代码集成到可执行文件中的库。...静态库是一组目标文件的集合,被打包为一个 .a 文件(例如 libmylib.a)。 2....更新库无需重新编译所有依赖该库的程序,只需确保新库的接口与旧库兼容。 缺点: 在运行时依赖于库的存在,如果库缺失或不兼容,程序将无法运行。 加载速度较慢,相较于静态库,有一定的开销。...通过了解静态库和动态库的使用以及它们的优缺点,开发者可以根据项目需求选择合适的库类型,优化程序性能和维护便利性。
动态库与静态库 文件系统补完 文件的三个时间acm 动态库与静态库 动态链接与静态链接 静态库与动态库 动静态库的对比 生成静态库 打包静态库 使用静态库 生成动态库 打包动态库 使用动态库 文件系统补完...动态库是动态链接生成的,而静态库是静态链接生成的。...静态库与动态库 一般的命名方式为lib+库的名字+.a比如C语言提供的标准静态库名字就是libc.a。 静态库是指程序在编译链接的时候把库的代码链接到可执行文件中。...打包动态库 在这里,我们将生成动态库的依赖关系及方法写进自动化构建工具中: 需要注意的是: 由于库在内存中是可加载的,它可能在内存中的任意位置,也可能被映射到进程地址空间的每个区域,所以为了保证库当中的代码执行不会出错...,也就是要保证库中的代码是与位置无关的,因此生成.o文件时需要带上-fPIC选项表示生成与位置无关码。
从使用方法上分库大体上可以分为两类:静态库和共享库。在windows中静态库是以 .lib 为后缀的文件,共享库是以 .dll 为后缀的文件。...以linux下的静态库和动态库为例我们研究一下,首先我们看一下他们的生成方式 静态库: 首先将源文件编译成目标文件:gcc –c a.c b.c 生成静态库:ar –rc libstatic.a a.o...,也可以说库文件已经是机器码文件了,静态库和共享库的加载过程有很大的区别。...总结: 一、库的类型 (一) 在windows中 .dll 动态库 .lib 静态库 库即为源代码的二进制文件 (二) 在linux中 .so 动态库 .a 静态库 (三) 静态库和动态库的优缺点...(四) 静态库 在linux环境中, 使用ar命令创建静态库文件.如下是命令的选项: d —–从指定的静态库文件中删除文件 m —–把文件移动到指定的静态库文件中
库的基本概念: windows下静态库的创建和使用 1.静态库的创建 步骤: 总结:
[x]静态库 .a : 从静态库中拷贝 对应的函数定义,即使对应机器上没有这个 库,也能运行; 静态库链接一般要放在最后面。...[x]动态库 .so : 运行时,动态加载的, 编译器只 “拷贝”一些重定位和符号表信息 , 若对应机器上没有这个库,则无法运 相关指令 [2021-07-24 14:50:19][PID:8229]...即我们通常所认识的,可直接运行的二进制文件] [2021-07-24 14:50:19][PID:8229] [可重定位目标文件。...locate libm.so readelf -h /lib/x86_64-linux-gnu/libm.so.6 共享目标文件 [2021-07-24 14:50:19][PID:8229] [静态链接...(查看链接了哪些库)
领取专属 10元无门槛券
手把手带您无忧上云