如何确保网站安全性?微赞网4米高挡土墙模板加固方法!
摘要:做网站 就上微赞网,4米高挡土墙模板加固,WordPress的登录页面,房地产微网站模板共享库是将库函数打包成一个可执行文件,使得其在运行时可以被多个进程共享。 目标库 回顾下构建程序的一种方式&
做网站 就上微赞网,4米高挡土墙模板加固,WordPress的登录页面,房地产微网站模板共享库是将库函数打包成一个可执行文件#xff0c;使得其在运行时可以被多个进程共享。
目标库
回顾下构建程序的一种方式#xff1a; 将每个源文件编译成目标文件#xff0c;再通过链接器将这些目标文件链接组成一个可执行程序。 gcc -g -c prog.c mod1.c mod2.c
gcc -g …共享库是将库函数打包成一个可执行文件使得其在运行时可以被多个进程共享。
目标库
回顾下构建程序的一种方式 将每个源文件编译成目标文件再通过链接器将这些目标文件链接组成一个可执行程序。 gcc -g -c prog.c mod1.c mod2.c
gcc -g -o prog prog.o mod1.o mod2.o库分为静态的和共享的。
静态库
静态库是一个保存所有被添加到其中的目标文件的副本的文件。其名称形式libname.a。
可以通过ar命令来创建和维护静态库
ar options archive object-files ...
#比如创建静态库
ar r libtest.a test1.o test2.o test3.o
#比如从静态库中删除一个模块
ar d libtest.a test2.o使用静态库有两种方法 gcc -g -o prog prog.o libtest.a gcc -g -o prog prog.o -Lxxx -ltest, 通过-L执行搜索目录和-l指定库名称
创建共享库
静态库有一些缺陷 多个静态库如果都使用到同一个目标文件那么存储同一个目标文件的多个副本将会浪费磁盘空间 如果多个程序都使用到了这个同一个目标文件那么每个程序会在虚拟内存中独立保存一份该目标文件的副本提高了整体虚拟内存使用量 如果这同一个目标文件修改了 那么使用到这个目标文件的多个静态库都要重新链接
所以需要设计出共享库机制。
共享库的目标思想是目标文件的单个副本由所有需要使用它的程序共享。
由第一个需要使用该目标文件的程序启动时将该目标文件的副本运行加载进内存后面的程序如果也需要使用该目标文件直接使用已经被加载进内存的副本即可。 虽然共享库的代码是共享的但其中的变量不是共享的每个使用库的程序会拥有自己在库中定义的全局和静态变量的副本。 创建一个共享库
gcc -g -c -fPIC -Wall mod1.c mod2.c mod3.c
gcc -g -shared -o libfoo.so mod1.o mod2.o mod3.o共享库的前缀是lib后缀是.so。
-fPIC选项编译器应该生成位置独立的代码这样共享库代码可以放到任意一个虚拟地址处。
也可以使用一行命令来生成共享库
gcc -g -fPIC -Wall mod1.c mod2.c mod3.c -shared -o libfoo.so
使用共享库也有两种方法 gcc -g -o prog prog.o libfoo.so gcc -g -o prog prog.o -Lxxx -lfoo, 通过-L执行搜索目录和-l指定库名称
程序启动时可以通过LD_LIBRARY_PATH来指定库的位置。
共享库别名soname
如果一个共享库有别名soname则静态链接时会将soname嵌入到可执行文件中而不使用真实名字。
gcc -g -c -fPIC -Wall mod1.c mod2.c mod3.c
gcc -g -shared -Wl,-soname,libbar.so -o libfoo.so mod1.o mod2.o mod3.o通过**-Wl,-soname**参数设置共享库libfoo.so的别名为libbar.so这样程序在链接共享库libfoo.so的时候嵌入的就是libbar.so名字所以还需要一步创建软连接
ln -s libfoo.so libbar.sosoname的目的是为了提供一层间接层使得可执行程序能够在运行时使用与链接时使用的库不同的但兼容的共享库。
版本和命名
真实名字命名规则
libname.so.major-id.minor-id比如libdemo.so.1.0.1第一个数字是主版本号第二个数字是次版本号第三个数字是该次版本中的修订号或补订号。
soname命名规则
libname.so.major-id比如libdemo.so.1只需要包含主版本号。
libname.so.1 -- libdemo.so.1.0.1通常还会创建一个链接器名称比如libdemo.so没有版本号。链接器铭名称可以链接到soname也可以链接到真实名字一般链接到soname。
