Linux编译静态库与共享库】的更多相关文章

申明: 正如题如示,本篇讲的是Linux下是静态库与共享库,而Window下的动态链接库详细情况可见这篇文章:windows动态链接库 DLL 浅析.虽然原理,思想差不多,但是细节却各有不同. 一.静态库 1.概念 :静态库指将所有相关的目标文件打包成为一个单独的文件-即静态库文件,以.a结尾.静态库可作为链接器的输入,链接器会将程序中使用的到函数的代码从库文件中拷贝到应用程序中.一旦链接完成,在执行程序的时候就不需要静态库了. 注1:由于每个使用静态库的应用程序都需要拷贝所用函数的代码,所以静…
原文网址:http://blog.csdn.net/heyabo/article/details/11688517 申明: 正如题如示,本篇讲的是Linux下是静态库与共享库,而Window下的动态链接库详细情况可见这篇文章:windows动态链接库 DLL 浅析.虽然原理,思想差不多,但是细节却各有不同. 一.静态库   1.概念:静态库指将所有相关的目标文件打包成为一个单独的文件-即静态库文件,以.a结尾.静态库可作为链接器的输入,链接器会将程序中使用的到函数的代码从库文件中拷贝到应用程序中…
转载&&增加:      我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护.我们可以把他们制作成相应的功能函数,使用时直接调用就会很方便,还可以进行后期的功能升级.  例如我要在一段代码中多次交换两个变量的值,我可以在代码中多次写入 i=x;x=y;y=i; 不过这样未免有点麻烦我们可以编写一个change_two_int()函数进行简化.定义如下函数:void chan…
库中实际上就是已编译好的函数代码,可以被程序直接调用. Linux下的库一般的位置在/lib或者/usr/lib中 静态库 静态库是复制拷贝到调用函数中的,函数运行的时候不再需要静态库,因为静态库是在链接的时候加进去的,所以当函数运行的时候,源库的改变对运行中的函数造成不影响.随之而来,当静态库升级之后,每一个调用静态库的程序都需要重新编译. 特点: 链接静态库的时候,会把库中的相关代码拷贝到可执行文件中 程序运行时不再需要静态库 程序运行时不需加载库,运行速度快 因为库中相关代码是拷贝到可执行…
序言: 前面一课讲了gcc的简单入门,包括gcc编译步骤:预处理:编译:汇编:链接.今天这节课就来讲下linux的库也欢迎大家吐糟共同学习. 原理: linux系统中分为2种库:静态库和共享库.静态库是以.a后缀结尾的文件,通常是在编译的链接阶段指定静态库的位置进行编译生成可执行文件,因此生成的可执行文件在执行的时候不需要静态库的参与.动态库共享库是以.so后缀结尾的文件,通常情况下代码中有需要用到共享库的地方在编译链接阶段指定共享库的路径在执行可执行文件的时候从内存表中读取代码,内存中只有一份…
0.前言     在较为复杂的项目中会利用到交叉编译得到的共享库(*.so文件).在这样的情况下便会产生下面疑问,比如:     [1]交叉编译时的共享库是否须要放置于目标板中,假设须要放置在哪个文件夹中.     [2]交叉编译时的共享库是否须要放置于宿主机中,假设须要放置于哪个文件夹中.     [3]交叉编译时怎样指定共享库     [4]程序执行时怎样查找共享库     等等问题.          博文总结了使用共享库的一般方法.并通过一个样例说明问题.假设已经有了交叉编译好的共享库,…
判断OpenCV是否为共享库,Windows基于CMake编译Caffe需要opencv共享库 TLDR 只考虑windows下opencv预编译包的情况. 对于opencv2.4.x系列,cmake时指定-DOpenCV_STATIC=OFF则为使用动态共享库,不指定或者指定-DOpenCV_STATIC=ON则为使用静态库. 对于opencv3系列,我用的不多.opencv310看起来是只有动态库. find(OpenCV)后,打印${OpenCV_LIB_PATH}和${OpenCV_SH…
1.什么是静态库静态库类似windows中的静态lib 关于windows中的静态lib,可参考 Windows动态链接库DLL 特点:包含函数代码声明和实现,链接后所有代码都嵌入到宿主程序中. 只在编译时使用,执行时不再需要该静态库. 2.静态库编写示例如下:addvec.c void addvec(int* x, int* y, int*z, int n) { ; for(; i< n;++i) z[i] = x[i] + y[i]; } multvec.c void multvec(int…
转自:http://www.cnblogs.com/zlcxbb/p/6806269.html 1.什么是静态库 静态库类似windows中的静态lib 关于windows中的静态lib,可参考 Windows动态链接库DLL 特点:包含函数代码声明和实现,链接后所有代码都嵌入到宿主程序中. 只在编译时使用,执行时不再需要该静态库. 2.静态库编写示例如下:addvec.c void addvec(int* x, int* y, int*z, int n) { int i=0; for(; i<…
1. 静态库 静态库文件命名:libxxxx.a 1.1 步骤: ar rcs libCalc.a *.o 1.2 用nm查看文件内容 1.3 发布并使用 gcc main.c -o mycpp.out -I include/ -L lib/ -lCalc 注意: -L:包含库路径, -l:指定库名(通常是 -lmylib (库名为libmylib.a))  2. 动态库 1. 编译与位置无关的代码,生成.o gcc -fPIC -c *.c -I ../include/ 注意:这些 *.o文件…