linux编译skia静态库(linux静态编译和动态编译)
Linux下的静态库和动态库
静态库
可以把它想象成是一些代码的集合,在可执行程序运行前就已经加到了代码中,成为了执行程序的一部分,一般是以.a为后缀的文件名,Windows下后缀为.lib。静态库的命名也分为三部分,1、前缀:lib,2、库的名称:随意,如lisi,3、后缀:.a。
静态库优缺点
上面简单介绍了静态库,那它自然也会有优缺点,这里来介绍下它的优缺点。
优点:1、在最后,函数库是被打包到应用程序中的,实现函数本地化、寻址方便、高效。2、程序在运行的时候,与函数库没有关系,移植性更强。
缺点:1、消耗资源较大,每个进程在使用静态库的时候,都要复制一份才可以,这也就造成了内存的消耗。2、在程序更新、部署、发布的时候,使用静态库相对麻烦,如果一个静态库更新了,那它的应用程序都需要重新编译,再发送给用户,有的时候可能只是一个小的改动,但对于用户来说,会导致整个程序重新下载。
动态库
在程序编译时不会被连接到目标代码中,在后期运行时才会载入,不同的应用程序如果调用相同的库,内存中只有一份共享库的拷贝,也就避免了空间的浪费问题。一般以.so作为文件后缀名,也分为三部分:1、前缀:lib,2、库名称:自定义,3、后缀:.so
动态库优缺点
优点:1、节省内存2、部署、升级相对方便,只需要更换动态库,再重新启动服务即可。
缺点:1、加载速度比静态库慢2、移植性较差,需要把所有用到的动态库进行移植。
linux怎样实现c语言动态库与静态库的链接
Linux系统中静态库是.a文件,编译链接.a文件只需要加上.a文件的完整的文件路径就可以了,比如:
gcc
-o
hello
hello.c
/usr/lib/libm.a
Linux系统的动态库是系统中的.so文件,编译链接动态库需要用-L参数指定动态库的搜索路径,还要用-l(这个是小写的L)指定动态库的名字,比如:
gcc
-o
hello
hello.c
-L/usr/openssl/lib
-lcrypto
在linux环境下静态库(.a)的编译和使用
假设我们自己编译一个加法程序,和打印程序。
那么我们可以通过下面两个命令将这两个函数编译成静态库。
那么我们可以通过下面的命令(任选一种)将main.cpp与静态库进行编译。
待后续补充
Linux 中,在使用g++编译、连接程序时,怎样调用多个静态库文件?
在编译命令行中,将使用的静态库文件放在源文件后面就可以了。比如:
gcc -L/usr/lib myprop.c libtest.a libX11.a libpthread.a -o myprop
其中-L/usr/lib指定库文件的查找路径,编译器默认在当前目录下先查找指定的库文件。
linux下编译怎么链接静态库
静态库不能被打包到.o 文件 在C编译中, 是.c编译成.o,然后若干个.o打包成.a .a要比.o高一级的。 所以不能产生新的.o 你可以把.a文件解开 成为.o集合 加上你的.o文件, 共同打包成一个新的.a文件 这样是可行的。
linux a 静态库 怎么设置
Linux的静态库文件并不需要设置啊,编译链接.a静态库文件时只需要加上.a文件的完整路径就可以了,比如:
gcc
-o
hello
hello.c
/usr/lib/libm.a
只有编译链接动态库才需要用-L选项来设置动态库的搜索路径,比如这个命令:
gcc
-o
hello
hello.c
-L/usr/openssl/lib
-lcrypto