转摘网址为:http://www.cnblogs.com/fengyv/archive/2012/08/10/2631313.html Linux下文件的类型是不依赖于其后缀名的,但一般来讲:    .o,是目标文件,相当于windows中的.obj文件    .so 为共享库,是shared object,用于动态连接的,和dll差不多    .a为静态库,是好多个.o合在一起,用于静态连接    .la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息.可以用如下命令…
VS2010中如何将动态链接库改成静态链接库 VS2010静态编译生成的.exe可执行文件,可以免安装免DLL在其他电脑直接运行. 静态编译:就是在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖动态链接库. 1. 编译实现方式有两种 [1]debug方式的静态链接: 设置: (1)项目 -> 配置属性->常规->MFC的使用:在静态库中使用MFC(如果有使用MFC). (2)项目 -> 配置…
转载地址:http://www.cnblogs.com/chio/archive/2008/08/05/1261296.html 目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称"静态库"),另一种为动态连接库(DLL,以下简称"动态库")的导入库(Import Libary,以下简称"导入库"). 静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起.…
首先明确这篇文章的目的,我希望大家能够通过这篇文章了解一下如何在实际工作中创建和使用Windows平台下的静态链接库.关于链接库的概念,希望大家参考维基百科"Library"词条(英文版),介绍的很全面,措辞也很严谨.远比你从网上东看西逛来的迅捷.文中对动态链接库和静态链接库的区别以及Windows平台和Linux平台的具体实现都做了很详细的说明.什么时候该用动态库,什么时候该用静态库也可以从中得到结论.所以我就不谈哪个好,哪个不好了.我只假设这样一种情况,你已经确定要创建.使用Win…
前言: 编译器 Qt Creator, 系统环境 win7 64 位 1.创建共享库: 新建文件或项目->选择 Library 和 c++ 库->选择共享库->下一步(工程名为 sharedlib) 生成的目录结构如图: 修改 sharedlib.h 中的代码: // sharedlib.h #ifndef SHAREDLIB_H #define SHAREDLIB_H #include "sharedlib_global.h" class SHAREDLIBSHAR…
第一部分:编译过程 先了解一下linux下C代码的编译过程,C代码的编译,一般分成四个阶段,包括:预编译,编译,汇编和链接,这四个阶段的分工是 预处理过程,负责头文件展开,宏替换,条件编译的选择,删除注释等工作.gcc –E表示进行预处理. 编译过程,负载将预处理生成的文件,经过词法分析,语法分析,语义分析及优化后生成汇编文件.gcc –S表示进行编译. 汇编,是将汇编代码转换为机器可执行指令的过程.通过使用gcc –C或者as命令完成. 链接,负载根据目标文件及所需的库文件产生最终的可执行文件…
库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. 面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了. 动态库而言:某个程序在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了.如果有,则让其共享那一个拷贝:只有没有才链接载入.在程序运行的时候,被调用的动态链接库函数被安置在内存的某个地方,所有调用它的程序将指向这…
关于链接库的知识,网上太多资料了,但是并不代表我很熟悉.今天遇到了 一个问题,就是由于静态链接库和ubuntu系统不兼容导致的,虽然花了点时间才搞定 但是,其中暴露的问题也不少. 没有区分好静态链接库和动态链接库的概念和使用方法. 链接库,顾名思义,就是一些函数代码的集合库,主要有静态链接库和动态链接库两种 二者的不同点在于代码被载入的时刻不同. 静态库的代码在编译过程中已经被载入可 执行程序,因此体积较大.共享库的代码是在可执行程序运行时才载入内存的,在编译 过程中仅简单的引用,因此代码体积较…
库函数是我们编程的时候经常用到的,我们协作编程的时候可以将常用的函数封装成库供大家使用,这样能够提高大家的工作效率.对于库函数,它分为动态链接库和静态链接库.对于静态链接库我们必须是连接到可执行文件中的,而动态链接库不需要连接到最终的可执行文件中,也就是说我们删除静态库文件,可执行文件还是能够执行的,但是动态链接中就无法执行了. 在linux中静态链接库文件的后缀是*.a windows下为*.lib windows下面的动态连接库是以*.dll作为结尾的,而linux下面的动态连接库是以*.s…
C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径.自己指定的路径就不说了,这里说明一下系统自动搜索的路径. [1]include头文件路径除了默认的/usr/include, /usr/local/include等include路径外,还可以通过设置环境变量来添加系统include的路径:# C export C_INCLUDE_PATH=XXXX:$C_INCLUDE_PATH # CPP export C…