C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项
分类:
编程语言 时间:
2014-09-20 19:33:39
阅读次数:
526
众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及该动态库的...
分类:
其他好文 时间:
2014-09-20 15:20:27
阅读次数:
122
如何逐步实现动态库的加载,类型的匹配,动态链接库函数导出的定义,参考下面宏定义即可:#defineLIBEXPORT_APIextern"C"__declspec(dllexport)第一步,我先从简单的调用出发,定义了一个简单的函数,该函数仅仅实现一个整数加法求和:LIBEXPORT_APIint...
分类:
其他好文 时间:
2014-09-20 15:14:47
阅读次数:
175
首先介绍一下静态库(静态链接库)、动态库(动态链接库)的概念,首先两者都是代码共享的方式。静态库:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被直...
分类:
其他好文 时间:
2014-09-20 11:03:07
阅读次数:
183
Linux系统下动态库的生成
一、简述
Linux下动态库文件的扩展名为 ".so"(Shared Object)。按照约定,所有动态库文件名的形式是libname.so(可能在名字中加入版本号)。这样,线程函数库被称作libthread.so。静态库的文件名形式是libname.a。共享archive的文件名形式是libname.sa。共享archive只是一种过渡形式,帮助人们...
分类:
系统相关 时间:
2014-09-18 18:57:04
阅读次数:
235
其实,操作系统简单的来说,可以分为三部分:内核,库,shell内核:简单来说就是一种负责分配计算机硬件资源的软件库:而各种软件运行时所依赖的库文件,这种库文件在win中和linux的表现形式分别为"*.dll"文件和"*.so"文件,也就是所谓的动态链接库和动态链接对象,这种动态库..
分类:
系统相关 时间:
2014-09-16 02:49:00
阅读次数:
240
静态库的链接基本上同链接目标文件.obj/.o相同,但也有些不同的地方。本文简要描述linux下静态库在链接过程中的一些细节。
静态库文件格式
静态库远远不同于动态库,不涉及到符号重定位之类的问题。静态库本质上只是将一堆目标文件进行打包而已。静态库没有标准,不同的linux下都会有些细微的差别。大致的格式wiki上描述的较清楚:
Global header
-----------------...
分类:
其他好文 时间:
2014-09-15 22:50:59
阅读次数:
351
图片、xib等资源文件无法直接封入静态库,要想在静态库中使用他们,就必须借助于bundle 那么什么是bundle呢? 简单来说,bundle就是一个内部结构按照标准规则组织的特殊目录,即directory 要知道,iOS的应用都是通过bundle进行封装的,对应的bundle类型...
分类:
其他好文 时间:
2014-09-14 22:02:07
阅读次数:
229
前面介绍过,虽然苹果公司禁止在iOS开发中使用动态库,而且也从XCode中移除了创建静态框架的功能,但我们还是可以通过对XCode进行小小的改动来创建静态框架。编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3)首先创建一个静....
分类:
移动开发 时间:
2014-09-14 21:57:27
阅读次数:
403
编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3)一、首先将资源文件打包成bundle由于bundle是静态的,所以可以将“iOS开发之静态库(三)—— 图片、界面xib等资源文件封装到.a静态库”中生成的“MyToolsWi...
分类:
移动开发 时间:
2014-09-14 21:55:37
阅读次数:
5447